{"id":365,"date":"2020-08-18T18:45:41","date_gmt":"2020-08-18T17:45:41","guid":{"rendered":"https:\/\/blog.thomarite.uk\/?p=365"},"modified":"2020-08-19T11:02:37","modified_gmt":"2020-08-19T10:02:37","slug":"sr-and-ti-lfa","status":"publish","type":"post","link":"https:\/\/blog.thomarite.uk\/index.php\/2020\/08\/18\/sr-and-ti-lfa\/","title":{"rendered":"SR and TI-LFA"},"content":{"rendered":"\n<p>Segment Routing (<strong>SR<\/strong>) and Topology Independent Loop Free Alternates (<strong>TI-LFA<\/strong>)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Intro<\/h2>\n\n\n\n<p>As part of having a MPLS SR lab, I wanted to test FRR (Fast Rerouting) solutions. Arista provides support for FRR TI-LFA based on this <a href=\"https:\/\/eos.arista.com\/eos-4-22-1f\/support-for-ti-lfa-frr-using-is-is-segment-routing\/\">link<\/a>. Unfortunately, if you are not a customer you can&#8217;t see that \ud83d\ude41 <\/p>\n\n\n\n<p>But there are other links where you can read about TI-LFA. The two from juniper confuses me when calculating P\/Q groups in pre-converge time&#8230;<\/p>\n\n\n\n<p><a href=\"https:\/\/blogs.juniper.net\/en-us\/industry-solutions-and-trends\/segment-routing-sr-and-topology-independent-loop-free-alternates-ti-lfa\">https:\/\/blogs.juniper.net\/en-us\/industry-solutions-and-trends\/segment-routing-sr-and-topology-independent-loop-free-alternates-ti-lfa<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/storage.googleapis.com\/site-media-prod\/meetings\/NANOG79\/2196\/20200530_Bonica_The_Evolution_Of_v1.pdf\">https:\/\/storage.googleapis.com\/site-media-prod\/meetings\/NANOG79\/2196\/20200530_Bonica_The_Evolution_Of_v1.pdf<\/a><\/p>\n\n\n\n<p>The documents above explain the evolution from Loop Free Alternates (LFA) to Remote LFA (RLFA) and finally to TI-LFA. <\/p>\n\n\n\n<p>TI-LFA overcomes the limitations of RLFA using SR paths as repair tunnels. <\/p>\n\n\n\n<p>As well, I have tried to read IETF <a href=\"https:\/\/tools.ietf.org\/html\/draft-bashandy-rtgwg-segment-routing-ti-lfa-05\">draft<\/a> and I didn&#8217;t understand things better \ud83d\ude41<\/p>\n\n\n\n<p>And I doubt I am going to improve it here \ud83d\ude42<\/p>\n\n\n\n<p>As well, Cisco has good presentations (longer and denser) about SR and TI-LFA.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/us\/docs\/2016\/pdf\/BRKRST-3020.pdf\">https:\/\/www.ciscolive.com\/c\/dam\/r\/ciscolive\/us\/docs\/2016\/pdf\/BRKRST-3020.pdf<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.segment-routing.net\/tutorials\/2016-09-27-topology-independent-lfa-ti-lfa\/\">https:\/\/www.segment-routing.net\/tutorials\/2016-09-27-topology-independent-lfa-ti-lfa\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"1024\" src=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-13-34-965x1024.png\" alt=\"\" class=\"wp-image-367\" srcset=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-13-34-965x1024.png 965w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-13-34-283x300.png 283w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-13-34-768x815.png 768w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-13-34-1200x1273.png 1200w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-13-34.png 1408w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"999\" height=\"490\" src=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-15-43.png\" alt=\"\" class=\"wp-image-368\" srcset=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-15-43.png 999w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-15-43-300x147.png 300w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-16-15-43-768x377.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Juniper docs mention always &#8220;pre-convergence&#8221; but Cisco uses &#8220;post-convergence&#8221;. I think &#8220;post&#8221; it is more clear.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">EOS TI-LFA Limitations<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Backup paths are not computed for prefix segments that do not have a host mask (\/32 for v4 and \/128 for v6).<\/li><li>When TI-LFA is configured, the number of anycast segments generated by a node cannot exceed 10.<\/li><li>Computing TI-LFA backup paths for proxy node segments is not supported.<\/li><li>Backup paths are not computed for node segments corresponding to multi-homed prefixes. The multi-homing could be the result of them being anycast node segments, loopback interfaces on different routers advertising SIDs for the same prefix, node segments leaked between levels and thus being seen as originated from multiple L1-L2 routers.<\/li><li>Backup paths are only computed for segments that are non-ECMP.<\/li><li>Only IS-IS interfaces that are using the point-to-point network type are eligible for protection.<\/li><li>The backup paths are only computed with respect to link\/node failure constraints. SRLG constraint is not yet supported.<\/li><li>Link\/node protection only supported in the default VRF owing to the lack of non-default VRF support for IS-IS segment-routing.<\/li><li>Backup paths are computed in the same IS-IS level topology as the primary path.<\/li><li>Even with IS-IS GR configured, ASU2, SSO, agent restart are not hitless events for IS-IS SR LFIB routes or tunnels being<br>protected by backup paths.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">LAB<\/h2>\n\n\n\n<p>Based on this, I built a lab using 4.24.1.1F 64 bits on EVE-NG. All links have default ISIS cost of 10 (loopbacks are 1) and we have TI-LFA node-protection enabled globally.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"549\" src=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1024x549.png\" alt=\"\" class=\"wp-image-366\" srcset=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1024x549.png 1024w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-300x161.png 300w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-768x412.png 768w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1536x824.png 1536w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-2048x1099.png 2048w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1200x644.png 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption>Fig1. SR TI-LFA Lab<\/figcaption><\/figure>\n\n\n\n<p>The config are quite simple. This is l1r9. The only change is the IP addressing. The links in the diagram show the third octet of the link address range. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">!\nservice routing protocols model multi-agent\n!\nhostname l1r9\n!\nspanning-tree mode mstp\n!\naaa authorization exec default local\n!\nno aaa root\n!\nvrf instance MGMT\n!\ninterface Ethernet1\nno switchport\nip address 10.0.10.2\/30\nisis enable CORE\nisis network point-to-point\n!\ninterface Ethernet2\nno switchport\nip address 10.0.11.2\/30\nisis enable CORE\nisis network point-to-point\n!\ninterface Ethernet3\nno switchport\nip address 10.0.12.1\/30\nisis enable CORE\nisis network point-to-point\n!\ninterface Ethernet4\nno switchport\nip address 10.0.13.1\/30\nisis enable CORE\nisis network point-to-point\n!\ninterface Loopback1\ndescription CORE Loopback\nip address 10.0.0.9\/32\nnode-segment ipv4 index 9\nisis enable CORE\nisis metric 1\n!\ninterface Management1\nvrf MGMT\nip address 192.168.249.18\/24\n!\nip routing\nip routing vrf MGMT\n!\nip route vrf MGMT 0.0.0.0\/0 192.168.249.1\n!\nmpls ip\n!\nmpls label range isis-sr 800000 65536\n!\nrouter isis CORE\nnet 49.0000.0001.0010.0000.0000.0009.00\nis-type level-2\nlog-adjacency-changes\ntimers local-convergence-delay protected-prefixes\nset-overload-bit on-startup wait-for-bgp\n!\naddress-family ipv4 unicast\nbfd all-interfaces\nfast-reroute ti-lfa mode node-protection\n!\nsegment-routing mpls\nrouter-id 10.0.0.9\nno shutdown\nadjacency-segment allocation sr-peers backup-eligible\n!\nmanagement api http-commands\nprotocol unix-socket\nno shutdown\n!\nvrf MGMT\nno shutdown\n!<\/pre>\n\n\n\n<p>Using this <a href=\"https:\/\/github.com\/thomarite\/gcp-nornir\/blob\/master\/show-frr-napalm.py\">script<\/a> (using nornir\/napalm), I gather the output of all these commands from all routers:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"<strong>show isis segment-routing prefix-segments<\/strong>\" -&gt; shows if protection is enabled for these segments\n\n\"<strong>show isis segment-routing adjacency-segments<\/strong>\" -&gt; shows is protection is enabled for these segments\n\n\"<strong>show isis interface<\/strong>\" -&gt; shows state of protection configured\n\n\"<strong>show isis ti-lfa path<\/strong>\" -&gt; shows the repair path with the list of all the system IDs from the P-node to the Q-node for every destination\/constraint tuple. You will see that even though node protection is configured a link protecting LFA is computed too. This is to fallback to link protecting LFAs whenever the node protecting LFA becomes unavailable.\n\n\"<strong>show isis ti-lfa tunnel<\/strong>\" -&gt; The TI-LFA repair tunnels are just internal constructs that are shared by multiple LFIB routes that compute similar repair paths. This command displays TI-LFA repair tunnels with the primary and backup via information.\n\n\"<strong>show isis segment-routing tunnel<\/strong>\" -&gt; command displays all the IS-IS SR tunnels. The field \u2018 TI-LFA tunnel index \u2019 shows the index of the TI-LFA tunnel protecting the SR tunnel. The same TI-LFA tunnel that protects the LFIB route also protects the corresponding IS-IS SR tunnel.\n\n\"<strong>show tunnel fib<\/strong>\" -&gt; displays tunnels programmed in the tunnel FIB also includes the TI-LFA tunnels along with protected IS-IS SR tunnels.\n\n\"<strong>show mpls lfib route<\/strong>\" -&gt; displays the backup information along with the primary vias for all node\/adjacency segments that have TI-LFA backup paths computed.\n\n\"<strong>show ip route<\/strong>\" -&gt; When services like LDP pseudowires, BGP LU, L2 EVPN or L3 MPLS VPN use IS-IS SR tunnels as an underlay, they are automatically protected by TI-LFA tunnels that protect the IS-IS SR tunnels. The \u2018show ip route\u2019 command displays the hierarchy of the overlay-underlay-TI-LFA tunnels like below.<\/pre>\n\n\n\n<p>This is the output of l1r3 in the initial state (no failures):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/                               Device: l1r3                         \/\/      \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\ncommand = show isis segment-routing prefix-segments\n\n\nSystem ID: 0000.0000.0003\t\t\tInstance: 'CORE'\nSR supported Data-plane: MPLS\t\t\tSR Router ID: 10.0.0.3\n\nNode: 11     Proxy-Node: 0      Prefix: 0       Total Segments: 11\n\nFlag Descriptions: R: Re-advertised, N: Node Segment, P: no-PHP\n                   E: Explicit-NULL, V: Value, L: Local\nSegment status codes: * - Self originated Prefix, L1 - level 1, L2 - level 2\n  Prefix                      SID Type       Flags                   System ID       Level Protection\n  ------------------------- ----- ---------- ----------------------- --------------- ----- ----------\n  10.0.0.1\/32                   1 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0001  L2    node      \n  10.0.0.2\/32                   2 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0002  L2    node      \n* 10.0.0.3\/32                   3 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0003  L2    unprotected\n  10.0.0.4\/32                   4 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0004  L2    node      \n  10.0.0.5\/32                   5 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0005  L2    node      \n  10.0.0.6\/32                   6 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0006  L2    node      \n  10.0.0.7\/32                   7 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0007  L2    node      \n  10.0.0.8\/32                   8 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0008  L2    node      \n  10.0.0.9\/32                   9 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0009  L2    node      \n  10.0.0.10\/32                 10 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0010  L2    node      \n  10.0.0.11\/32                 11 Node       R:0 N:1 P:0 E:0 V:0 L:0 0000.0000.0011  L2    node      \n\n================================================================================\n\ncommand = show isis segment-routing adjacency-segments\n\n\nSystem ID: l1r3\t\t\tInstance: CORE\nSR supported Data-plane: MPLS\t\t\tSR Router ID: 10.0.0.3\nAdj-SID allocation mode: SR-adjacencies\nAdj-SID allocation pool: Base: 100000     Size: 16384\nAdjacency Segment Count: 4\nFlag Descriptions: F: Ipv6 address family, B: Backup, V: Value\n                   L: Local, S: Set\n\nSegment Status codes: L1 - Level-1 adjacency, L2 - Level-2 adjacency, P2P - Point-to-Point adjacency, LAN - Broadcast adjacency\n\nLocally Originated Adjacency Segments\nAdj IP Address  Local Intf     SID   SID Source                 Flags     Type  \n--------------- ----------- ------- ------------ --------------------- -------- \n      10.0.1.1         Et1  100000      Dynamic   F:0 B:1 V:1 L:1 S:0   P2P L2  \n      10.0.2.1         Et2  100001      Dynamic   F:0 B:1 V:1 L:1 S:0   P2P L2  \n      10.0.5.2         Et4  100002      Dynamic   F:0 B:1 V:1 L:1 S:0   P2P L2  \n      10.0.3.2         Et3  100003      Dynamic   F:0 B:1 V:1 L:1 S:0   P2P L2  \n\nProtection \n---------- \n      node \n      node \n      node \n      node \n\n\n================================================================================\n\ncommand = show isis interface\n\n\nIS-IS Instance: CORE VRF: default\n\n  Interface Loopback1:\n    Index: 12 SNPA: 0:0:0:0:0:0\n    MTU: 65532 Type: loopback\n    Area Proxy Boundary is Disabled\n    Node segment Index IPv4: 3\n    BFD IPv4 is Enabled\n    BFD IPv6 is Disabled\n    Hello Padding is Enabled\n    Level 2:\n      Metric: 1 (Passive Interface)\n      Authentication mode: None\n      TI-LFA protection is disabled for IPv4\n      TI-LFA protection is disabled for IPv6\n  Interface Ethernet1:\n    Index: 13 SNPA: P2P\n    MTU: 1497 Type: point-to-point\n    Area Proxy Boundary is Disabled\n    BFD IPv4 is Enabled\n    BFD IPv6 is Disabled\n    Hello Padding is Enabled\n    Level 2:\n      Metric: 10, Number of adjacencies: 1\n      Link-ID: 0D\n      Authentication mode: None\n      TI-LFA node protection is enabled for the following IPv4 segments: node segments, adjacency segments\n      TI-LFA protection is disabled for IPv6\n  Interface Ethernet2:\n    Index: 14 SNPA: P2P\n    MTU: 1497 Type: point-to-point\n    Area Proxy Boundary is Disabled\n    BFD IPv4 is Enabled\n    BFD IPv6 is Disabled\n    Hello Padding is Enabled\n    Level 2:\n      Metric: 10, Number of adjacencies: 1\n      Link-ID: 0E\n      Authentication mode: None\n      TI-LFA node protection is enabled for the following IPv4 segments: node segments, adjacency segments\n      TI-LFA protection is disabled for IPv6\n  Interface Ethernet3:\n    Index: 15 SNPA: P2P\n    MTU: 1497 Type: point-to-point\n    Area Proxy Boundary is Disabled\n    BFD IPv4 is Enabled\n    BFD IPv6 is Disabled\n    Hello Padding is Enabled\n    Level 2:\n      Metric: 10, Number of adjacencies: 1\n      Link-ID: 0F\n      Authentication mode: None\n      TI-LFA node protection is enabled for the following IPv4 segments: node segments, adjacency segments\n      TI-LFA protection is disabled for IPv6\n  Interface Ethernet4:\n    Index: 16 SNPA: P2P\n    MTU: 1497 Type: point-to-point\n    Area Proxy Boundary is Disabled\n    BFD IPv4 is Enabled\n    BFD IPv6 is Disabled\n    Hello Padding is Enabled\n    Level 2:\n      Metric: 10, Number of adjacencies: 1\n      Link-ID: 10\n      Authentication mode: None\n      TI-LFA node protection is enabled for the following IPv4 segments: node segments, adjacency segments\n      TI-LFA protection is disabled for IPv6\n\n================================================================================\n\ncommand = show isis ti-lfa path\n\nTI-LFA paths for IPv4 address family\n   Topo-id: Level-2\n   Destination       Constraint                     Path           \n----------------- --------------------------------- -------------- \n   l1r2              exclude node 0000.0000.0002    Path not found \n                     exclude Ethernet2              l1r6           \n   l1r8              exclude Ethernet4              l1r4           \n                     exclude node 0000.0000.0007    l1r4           \n   l1r9              exclude Ethernet4              l1r4           \n                     exclude node 0000.0000.0007    l1r4           \n   l1r11             exclude Ethernet4              l1r4           \n                     exclude node 0000.0000.0007    l1r4           \n   l1r10             exclude Ethernet3              l1r7           \n                     exclude node 0000.0000.0004    l1r7           \n   l1r1              exclude node 0000.0000.0001    Path not found \n                     exclude Ethernet1              Path not found \n   l1r6              exclude Ethernet4              l1r2           \n                     exclude node 0000.0000.0007    l1r2           \n   l1r7              exclude node 0000.0000.0007    Path not found \n                     exclude Ethernet4              l1r10          \n   l1r4              exclude Ethernet3              l1r9           \n                     exclude node 0000.0000.0004    Path not found \n   l1r5              exclude Ethernet2              l1r7           \n                     exclude node 0000.0000.0002    l1r7           \n\n\n================================================================================\n\ncommand = show isis ti-lfa tunnel\n\nTunnel Index 2\n   via 10.0.5.2, 'Ethernet4'\n      label stack 3\n   backup via 10.0.3.2, 'Ethernet3'\n      label stack 3\nTunnel Index 4\n   via 10.0.3.2, 'Ethernet3'\n      label stack 3\n   backup via 10.0.5.2, 'Ethernet4'\n      label stack 3\nTunnel Index 6\n   via 10.0.3.2, 'Ethernet3'\n      label stack 3\n   backup via 10.0.5.2, 'Ethernet4'\n      label stack 800009 800004\nTunnel Index 7\n   via 10.0.5.2, 'Ethernet4'\n      label stack 3\n   backup via 10.0.3.2, 'Ethernet3'\n      label stack 800010 800007\nTunnel Index 8\n   via 10.0.2.1, 'Ethernet2'\n      label stack 3\n   backup via 10.0.5.2, 'Ethernet4'\n      label stack 800006 800002\nTunnel Index 9\n   via 10.0.5.2, 'Ethernet4'\n      label stack 3\n   backup via 10.0.2.1, 'Ethernet2'\n      label stack 3\nTunnel Index 10\n   via 10.0.2.1, 'Ethernet2'\n      label stack 3\n   backup via 10.0.5.2, 'Ethernet4'\n      label stack 3\n\n================================================================================\n\ncommand = show isis segment-routing tunnel\n\n Index    Endpoint         Nexthop      Interface     Labels       TI-LFA       \n                                                                   tunnel index \n-------- --------------- ------------ ------------- -------------- ------------ \n 1        10.0.0.1\/32      10.0.1.1     Ethernet1     &#91; 3 ]        -            \n 2        10.0.0.2\/32      10.0.2.1     Ethernet2     &#91; 3 ]        8            \n 3        10.0.0.7\/32      10.0.5.2     Ethernet4     &#91; 3 ]        7            \n 4        10.0.0.4\/32      10.0.3.2     Ethernet3     &#91; 3 ]        6            \n 5        10.0.0.9\/32      10.0.5.2     Ethernet4     &#91; 800009 ]   2            \n 6        10.0.0.10\/32     10.0.3.2     Ethernet3     &#91; 800010 ]   4            \n 7        10.0.0.11\/32     10.0.5.2     Ethernet4     &#91; 800011 ]   2            \n 8        10.0.0.8\/32      10.0.5.2     Ethernet4     &#91; 800008 ]   2            \n 9        10.0.0.6\/32      10.0.5.2     Ethernet4     &#91; 800006 ]   9            \n 10       10.0.0.5\/32      10.0.2.1     Ethernet2     &#91; 800005 ]   10           \n\n\n================================================================================\n\ncommand = show tunnel fib\n\n\nType 'IS-IS SR', index 1, endpoint 10.0.0.1\/32, forwarding None\n   via 10.0.1.1, 'Ethernet1' label 3\n\nType 'IS-IS SR', index 2, endpoint 10.0.0.2\/32, forwarding None\n   via TI-LFA tunnel index 8 label 3\n      via 10.0.2.1, 'Ethernet2' label 3\n      backup via 10.0.5.2, 'Ethernet4' label 800006 800002\n\nType 'IS-IS SR', index 3, endpoint 10.0.0.7\/32, forwarding None\n   via TI-LFA tunnel index 7 label 3\n      via 10.0.5.2, 'Ethernet4' label 3\n      backup via 10.0.3.2, 'Ethernet3' label 800010 800007\n\nType 'IS-IS SR', index 4, endpoint 10.0.0.4\/32, forwarding None\n   via TI-LFA tunnel index 6 label 3\n      via 10.0.3.2, 'Ethernet3' label 3\n      backup via 10.0.5.2, 'Ethernet4' label 800009 800004\n\nType 'IS-IS SR', index 5, endpoint 10.0.0.9\/32, forwarding None\n   via TI-LFA tunnel index 2 label 800009\n      via 10.0.5.2, 'Ethernet4' label 3\n      backup via 10.0.3.2, 'Ethernet3' label 3\n\nType 'IS-IS SR', index 6, endpoint 10.0.0.10\/32, forwarding None\n   via TI-LFA tunnel index 4 label 800010\n      via 10.0.3.2, 'Ethernet3' label 3\n      backup via 10.0.5.2, 'Ethernet4' label 3\n\nType 'IS-IS SR', index 7, endpoint 10.0.0.11\/32, forwarding None\n   via TI-LFA tunnel index 2 label 800011\n      via 10.0.5.2, 'Ethernet4' label 3\n      backup via 10.0.3.2, 'Ethernet3' label 3\n\nType 'IS-IS SR', index 8, endpoint 10.0.0.8\/32, forwarding None\n   via TI-LFA tunnel index 2 label 800008\n      via 10.0.5.2, 'Ethernet4' label 3\n      backup via 10.0.3.2, 'Ethernet3' label 3\n\nType 'IS-IS SR', index 9, endpoint 10.0.0.6\/32, forwarding None\n   via TI-LFA tunnel index 9 label 800006\n      via 10.0.5.2, 'Ethernet4' label 3\n      backup via 10.0.2.1, 'Ethernet2' label 3\n\nType 'IS-IS SR', index 10, endpoint 10.0.0.5\/32, forwarding None\n   via TI-LFA tunnel index 10 label 800005\n      via 10.0.2.1, 'Ethernet2' label 3\n      backup via 10.0.5.2, 'Ethernet4' label 3\n\nType 'TI-LFA', index 2, forwarding None\n   via 10.0.5.2, 'Ethernet4' label 3\n   backup via 10.0.3.2, 'Ethernet3' label 3\n\nType 'TI-LFA', index 4, forwarding None\n   via 10.0.3.2, 'Ethernet3' label 3\n   backup via 10.0.5.2, 'Ethernet4' label 3\n\nType 'TI-LFA', index 6, forwarding None\n   via 10.0.3.2, 'Ethernet3' label 3\n   backup via 10.0.5.2, 'Ethernet4' label 800009 800004\n\nType 'TI-LFA', index 7, forwarding None\n   via 10.0.5.2, 'Ethernet4' label 3\n   backup via 10.0.3.2, 'Ethernet3' label 800010 800007\n\nType 'TI-LFA', index 8, forwarding None\n   via 10.0.2.1, 'Ethernet2' label 3\n   backup via 10.0.5.2, 'Ethernet4' label 800006 800002\n\nType 'TI-LFA', index 9, forwarding None\n   via 10.0.5.2, 'Ethernet4' label 3\n   backup via 10.0.2.1, 'Ethernet2' label 3\n\nType 'TI-LFA', index 10, forwarding None\n   via 10.0.2.1, 'Ethernet2' label 3\n   backup via 10.0.5.2, 'Ethernet4' label 3\n\n================================================================================\n\ncommand = show mpls lfib route\n\nMPLS forwarding table (Label &#91;metric] Vias) - 14 routes \nMPLS next-hop resolution allow default route: False\nVia Type Codes:\n          M - MPLS via, P - Pseudowire via,\n          I - IP lookup via, V - VLAN via,\n          VA - EVPN VLAN aware via, ES - EVPN ethernet segment via,\n          VF - EVPN VLAN flood via, AF - EVPN VLAN aware flood via,\n          NG - Nexthop group via\nSource Codes:\n          G - gRIBI, S - Static MPLS route,\n          B2 - BGP L2 EVPN, B3 - BGP L3 VPN,\n          R - RSVP, LP - LDP pseudowire,\n          L - LDP, M - MLDP,\n          IP - IS-IS SR prefix segment, IA - IS-IS SR adjacency segment,\n          IL - IS-IS SR segment to LDP, LI - LDP to IS-IS SR segment,\n          BL - BGP LU, ST - SR TE policy,\n          DE - Debug LFIB\n\n IA  100000   &#91;1]\n                via M, 10.0.1.1, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                 interface Ethernet1\n IA  100001   &#91;1]\n                via TI-LFA tunnel index 8, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.2.1, Ethernet2, label imp-null(3)\n                    backup via 10.0.5.2, Ethernet4, label 800006 800002\n IA  100002   &#91;1]\n                via TI-LFA tunnel index 7, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.5.2, Ethernet4, label imp-null(3)\n                    backup via 10.0.3.2, Ethernet3, label 800010 800007\n IA  100003   &#91;1]\n                via TI-LFA tunnel index 6, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.3.2, Ethernet3, label imp-null(3)\n                    backup via 10.0.5.2, Ethernet4, label 800009 800004\n IP  800001   &#91;1], 10.0.0.1\/32\n                via M, 10.0.1.1, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                 interface Ethernet1\n IP  800002   &#91;1], 10.0.0.2\/32\n                via TI-LFA tunnel index 8, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.2.1, Ethernet2, label imp-null(3)\n                    backup via 10.0.5.2, Ethernet4, label 800006 800002\n IP  800004   &#91;1], 10.0.0.4\/32\n                via TI-LFA tunnel index 6, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.3.2, Ethernet3, label imp-null(3)\n                    backup via 10.0.5.2, Ethernet4, label 800009 800004\n IP  800005   &#91;1], 10.0.0.5\/32\n                via TI-LFA tunnel index 10, swap 800005 \n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.2.1, Ethernet2, label imp-null(3)\n                    backup via 10.0.5.2, Ethernet4, label imp-null(3)\n IP  800006   &#91;1], 10.0.0.6\/32\n                via TI-LFA tunnel index 9, swap 800006 \n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.5.2, Ethernet4, label imp-null(3)\n                    backup via 10.0.2.1, Ethernet2, label imp-null(3)\n IP  800007   &#91;1], 10.0.0.7\/32\n                via TI-LFA tunnel index 7, pop\n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.5.2, Ethernet4, label imp-null(3)\n                    backup via 10.0.3.2, Ethernet3, label 800010 800007\n IP  800008   &#91;1], 10.0.0.8\/32\n                via TI-LFA tunnel index 2, swap 800008 \n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.5.2, Ethernet4, label imp-null(3)\n                    backup via 10.0.3.2, Ethernet3, label imp-null(3)\n IP  800009   &#91;1], 10.0.0.9\/32\n                via TI-LFA tunnel index 2, swap 800009 \n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.5.2, Ethernet4, label imp-null(3)\n                    backup via 10.0.3.2, Ethernet3, label imp-null(3)\n IP  800010   &#91;1], 10.0.0.10\/32\n                via TI-LFA tunnel index 4, swap 800010 \n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.3.2, Ethernet3, label imp-null(3)\n                    backup via 10.0.5.2, Ethernet4, label imp-null(3)\n IP  800011   &#91;1], 10.0.0.11\/32\n                via TI-LFA tunnel index 2, swap 800011 \n                 payload autoDecide, ttlMode uniform, apply egress-acl\n                    via 10.0.5.2, Ethernet4, label imp-null(3)\n                    backup via 10.0.3.2, Ethernet3, label imp-null(3)\n\n================================================================================\n\ncommand = show ip route\n\n\nVRF: default\nCodes: C - connected, S - static, K - kernel, \n       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,\n       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,\n       N2 - OSPF NSSA external type2, B - BGP, B I - iBGP, B E - eBGP,\n       R - RIP, I L1 - IS-IS level 1, I L2 - IS-IS level 2,\n       O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary,\n       NG - Nexthop Group Static Route, V - VXLAN Control Service,\n       DH - DHCP client installed default route, M - Martian,\n       DP - Dynamic Policy Route, L - VRF Leaked,\n       RC - Route Cache Route\n\nGateway of last resort is not set\n\n I L2     10.0.0.1\/32 &#91;115\/11] via 10.0.1.1, Ethernet1\n I L2     10.0.0.2\/32 &#91;115\/11] via 10.0.2.1, Ethernet2\n C        10.0.0.3\/32 is directly connected, Loopback1\n I L2     10.0.0.4\/32 &#91;115\/11] via 10.0.3.2, Ethernet3\n I L2     10.0.0.5\/32 &#91;115\/21] via 10.0.2.1, Ethernet2\n I L2     10.0.0.6\/32 &#91;115\/21] via 10.0.5.2, Ethernet4\n I L2     10.0.0.7\/32 &#91;115\/11] via 10.0.5.2, Ethernet4\n I L2     10.0.0.8\/32 &#91;115\/31] via 10.0.5.2, Ethernet4\n I L2     10.0.0.9\/32 &#91;115\/21] via 10.0.5.2, Ethernet4\n I L2     10.0.0.10\/32 &#91;115\/21] via 10.0.3.2, Ethernet3\n I L2     10.0.0.11\/32 &#91;115\/31] via 10.0.5.2, Ethernet4\n C        10.0.1.0\/30 is directly connected, Ethernet1\n C        10.0.2.0\/30 is directly connected, Ethernet2\n C        10.0.3.0\/30 is directly connected, Ethernet3\n I L2     10.0.4.0\/30 &#91;115\/20] via 10.0.2.1, Ethernet2\n C        10.0.5.0\/30 is directly connected, Ethernet4\n I L2     10.0.6.0\/30 &#91;115\/20] via 10.0.3.2, Ethernet3\n I L2     10.0.7.0\/30 &#91;115\/30] via 10.0.2.1, Ethernet2\n                               via 10.0.5.2, Ethernet4\n I L2     10.0.8.0\/30 &#91;115\/20] via 10.0.5.2, Ethernet4\n I L2     10.0.9.0\/30 &#91;115\/30] via 10.0.5.2, Ethernet4\n I L2     10.0.10.0\/30 &#91;115\/20] via 10.0.5.2, Ethernet4\n I L2     10.0.11.0\/30 &#91;115\/30] via 10.0.5.2, Ethernet4\n I L2     10.0.12.0\/30 &#91;115\/30] via 10.0.3.2, Ethernet3\n                                via 10.0.5.2, Ethernet4\n I L2     10.0.13.0\/30 &#91;115\/30] via 10.0.5.2, Ethernet4\n\n\n================================================================================\n<\/code><\/pre>\n\n\n\n<p> In <strong>l1r3<\/strong> we can see:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>show isis segment-routing prefix-segments<\/strong>:  all prefix segments are under &#8220;node&#8221; protection (apart from itself &#8211; 10.0.0.3\/32)<\/li><li><strong>show isis segment-routing adjacency-segments<\/strong>: all adjacent segments are under &#8220;node&#8221; protection.<\/li><li><strong>show isis interface<\/strong>: All isis enabled interfaces (apart from loopback1) have TI-LFA node protection enabled for ipv4.<\/li><li><strong>show isis ti-lfa path<\/strong>: Here we can see link and node protection to all possible destinations in our ISIS domain (all P routers in our BGP-Free core). When node protection is not possible, link protection is calculated. The exception is l1r1 because it has only one link into the networks, so if that is lost, there is no backup at all.<\/li><li><strong>show isis ti-lfa tunnel<\/strong>: This can be <em>confusing<\/em>. These are the TI-LFA tunnels, the first two lines refer to the path they are protecting. The last two lines are really the tunnel configuration. Another <em>interesting<\/em> thing here is the label stack for some backup tunnels (index 6, 7, 8). This a way to avoid a loop. The index is used in the next command.<\/li><li><strong>show isis segment-routing tunnel<\/strong>: Here we see the current SR tunnels and the corresponding backup (index that refers to above command). Label [3] is the implicit null label. Paying attention to the endpoint &#8220;10.0.0.2\/32&#8221; (as per fig2 below). We can see the primary path is via eth2. The backup is via tunnel index 8 (via eth4 &#8211; l1r7). If you check the path to &#8220;10.0.0.2\/32 &#8211; 800002&#8221; from l1r7 (output after fig2) you can see it is pointing back to l1r3 and we would have a loop! For this reason the backup tunnel index 8 in l1r3 has a label stack to avoid this loop (<em>800006 800002<\/em>). Once l1r7 received this packet and checks the segment labels, it sends the packet to 800006 via eth2 (l1r6) and then l1r6 uses 8000002 to reach finally l1r2 (via l1r5).<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"666\" src=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1-1024x666.png\" alt=\"\" class=\"wp-image-371\" srcset=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1-1024x666.png 1024w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1-300x195.png 300w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1-768x500.png 768w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1-1536x1000.png 1536w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1-1200x781.png 1200w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-18-17-09-08-1.png 2042w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption>Fig2. l1r3: backup tunnel for l1r2<\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>l1r7# show isis segment-routing tunnel<\/em>\nIndex Endpoint Nexthop Interface Labels TI-LFA\ntunnel index\n\n1 10.0.0.9\/32 10.0.10.2 Ethernet3 [ 3 ] 3\n2 10.0.0.6\/32 10.0.8.1 Ethernet2 [ 3 ] 1\n3 10.0.0.3\/32 10.0.5.1 Ethernet1 [ 3 ] 2\n4 10.0.0.10\/32 10.0.10.2 Ethernet3 [ 800010 ] 7\n5 10.0.0.11\/32 10.0.10.2 Ethernet3 [ 800011 ] 4\n6 10.0.0.4\/32 10.0.5.1 Ethernet1 [ 800004 ] 11\n7 10.0.0.8\/32 10.0.8.1 Ethernet2 [ 800008 ] -\n- 10.0.10.2 Ethernet3 [ 800008 ] -\n<strong>8 10.0.0.2\/32 10.0.5.1 Ethernet1 [ 800002 ] 9<\/strong>\n9 10.0.0.5\/32 10.0.8.1 Ethernet2 [ 800005 ] 8\n10 10.0.0.1\/32 10.0.5.1 Ethernet1 [ 800001 ] 10\nl1r7#\n<em>l1r7#show mpls lfib route 800006<\/em>\n...\nIP 800006 [1], 10.0.0.6\/32\nvia TI-LFA tunnel index 1, pop\npayload autoDecide, ttlMode uniform, apply egress-acl\nvia 10.0.8.1, Ethernet2, label imp-null(3)\nbackup via 10.0.10.2, Ethernet3, label 800008 800006\nl1r7#\n<em>l1r7#show mpls lfib route <strong>800002<\/strong><\/em>\n...\nIP 800002 [1], 10.0.0.2\/32\nvia TI-LFA tunnel index 9, swap 800002\npayload autoDecide, ttlMode uniform, apply egress-acl\nvia 10.0.5.1, <strong>Ethernet1<\/strong>, label imp-null(3)\nbackup via 10.0.8.1, Ethernet2, label imp-null(3)<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>show tunnel fib<\/strong>: you can see all &#8220;IS-IS SR&#8221; and &#8220;TI-LFA&#8221; tunnels defined. It is like a merge of &#8220;show isis segment-routing tunnel&#8221; and &#8220;show isis ti-lfa tunnel&#8221;.<\/li><li><strong>show mpls lfib route<\/strong>: You can see the programmed labels and TI-LFA. I&#8217;ve got confused when I see &#8220;imp-null&#8221; and the I see some pop\/swap for the same entry&#8230;<\/li><li><strong>show ip route<\/strong>: nothing really interesting without L3VPNS<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Testing<\/h2>\n\n\n\n<p>Ok, you need to generate traffic that is labelled to really test TI-LFA and with enough packet rate to see if you are close to the 50ms recovery promissed.<\/p>\n\n\n\n<p>So I have had to make some changes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>create a L3VPN  CUST-A (evpn) in l1r3 and l1r9, so they are PEs<\/li><li>l1r1 and l1r11 are CPE in VRF CUST-A<\/li><\/ul>\n\n\n\n<p>All other devices have no changes<\/p>\n\n\n\n<p>We need to test with and without TI-LFA enabled. The test I have do is to ping from l1r1 to l1r11 and dropping the link l1r3-l1r7, while l1r3 has enabled\/disabled TI-LFA.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"349\" src=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1-1024x349.png\" alt=\"\" class=\"wp-image-378\" srcset=\"https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1-1024x349.png 1024w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1-300x102.png 300w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1-768x262.png 768w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1-1536x524.png 1536w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1-1200x409.png 1200w, https:\/\/blog.thomarite.uk\/wp-content\/uploads\/2020\/08\/Screenshot-from-2020-08-17-20-29-42-1.png 1991w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption>Fig3 &#8211; Testing Scenario<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Routing changes with TI-LFA enabled<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\nBEFORE DROPPING LINK\n======\n\nl1r3#show ip route vrf CUST-A\n\n B I      10.0.13.0\/30 &#91;200\/0] via 10.0.0.9\/32, IS-IS SR tunnel index 5, label 116384\n                                  via TI-LFA tunnel index 4, label 800009\n                                     via 10.0.5.2, Ethernet4, label imp-null(3)\n                                     backup via 10.0.3.2, Ethernet3, label imp-null(3)\n C        192.168.0.3\/32 is directly connected, Loopback2\n B I      192.168.0.9\/32 &#91;200\/0] via 10.0.0.9\/32, IS-IS SR tunnel index 5, label 116384\n                                    via TI-LFA tunnel index 4, label 800009\n                                       via 10.0.5.2, Ethernet4, label imp-null(3)\n                                       backup via 10.0.3.2, Ethernet3, label imp-null(3)\n\nAFTER DROPPING LINK\n======\n\nl1r3#show ip route vrf CUST-A\n\n B I      10.0.13.0\/30 &#91;200\/0] via 10.0.0.9\/32, IS-IS SR tunnel index 5, label 116384\n                                  via TI-LFA tunnel index 11, label 800009\n                                     via 10.0.3.2, Ethernet3, label imp-null(3)\n                                     backup via 10.0.2.1, Ethernet2, label 800005\n C        192.168.0.3\/32 is directly connected, Loopback2\n B I      192.168.0.9\/32 &#91;200\/0] via 10.0.0.9\/32, IS-IS SR tunnel index 5, label 116384\n                                    via TI-LFA tunnel index 11, label 800009\n                                       via 10.0.3.2, Ethernet3, label imp-null(3)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ping results<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>TI-LFA enabled in L1R3  TEST1\n=========================\n\nbash-4.2# ping -f 10.0.13.2\nPING 10.0.13.2 (10.0.13.2) 56(84) bytes of data.\n..................^C                                                                                                      \n--- 10.0.13.2 ping statistics ---\n1351 packets transmitted, 1333 received, 1% packet loss, time 21035ms\nrtt min\/avg\/max\/mdev = 21.081\/348.764\/1722.587\/487.280 ms, pipe 109, ipg\/ewma 15.582\/67.643 ms\nbash-4.2# \n\n\nNO TI-LFA enabled in L1R3  TEST1\n=========================\n\nbash-4.2# ping -f 10.0.13.2\nPING 10.0.13.2 (10.0.13.2) 56(84) bytes of data.\n.............................................E...................................................................................^C            \n--- 10.0.13.2 ping statistics ---\n2274 packets transmitted, 2172 received, +1 errors, 4% packet loss, time 36147ms\nrtt min\/avg\/max\/mdev = 20.965\/88.300\/542.279\/86.227 ms, pipe 34, ipg\/ewma 15.903\/73.403 ms\nbash-4.2# \n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Summary Testing<\/h3>\n\n\n\n<p>With TI-LFA enabled in l1r3, we have lost 18 packets (around 280ms)<\/p>\n\n\n\n<p>Without TI-LFA in l1r3, we have lost 102 packets (around 1621ms =~ 1.6s)<\/p>\n\n\n\n<p>Keeping in mind this lab is based in VMs (veos) running in another VM (eve-ng) is not bad result. <\/p>\n\n\n\n<p>It seems far from the 50ms, but still shows the improvement of enabling TI-LFA<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Segment Routing (SR) and Topology Independent Loop Free Alternates (TI-LFA) Intro As part of having a MPLS SR lab, I wanted to test FRR (Fast Rerouting) solutions. Arista provides support for FRR TI-LFA based on this link. Unfortunately, if you are not a customer you can&#8217;t see that \ud83d\ude41 But there are other links where &hellip; <a href=\"https:\/\/blog.thomarite.uk\/index.php\/2020\/08\/18\/sr-and-ti-lfa\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;SR and TI-LFA&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-365","post","type-post","status-publish","format-standard","hentry","category-networks"],"_links":{"self":[{"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/posts\/365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/comments?post=365"}],"version-history":[{"count":6,"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/posts\/365\/revisions"}],"predecessor-version":[{"id":379,"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/posts\/365\/revisions\/379"}],"wp:attachment":[{"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/media?parent=365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/categories?post=365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.thomarite.uk\/index.php\/wp-json\/wp\/v2\/tags?post=365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}