{"id":4861,"date":"2021-05-13T22:49:07","date_gmt":"2021-05-13T22:49:07","guid":{"rendered":"https:\/\/karneliuk.com\/?p=4861"},"modified":"2021-05-13T22:49:09","modified_gmt":"2021-05-13T22:49:09","slug":"sp-part-9-health-check-of-segment-routing-traffic-engineering-sr-te-tunnels-with-seamless-bfd-in-nokia-sr-os","status":"publish","type":"post","link":"https:\/\/karneliuk.com\/2021\/05\/sp-part-9-health-check-of-segment-routing-traffic-engineering-sr-te-tunnels-with-seamless-bfd-in-nokia-sr-os\/","title":{"rendered":"SP. Part 9. Health check of Segment Routing Traffic Engineering (SR-TE) tunnels with seamless BFD in Nokia SR OS"},"content":{"rendered":"\n<p>Hello my friend,<\/p>\n\n\n\n<p>For a long time we haven&#8217;t posted blogs about pure network technologies. However, recently we were working on some interesting use case, which so far is not yet covered at a level of the working details nowhere in the internet. As such, we decided to share with you our findings and working details.<\/p>\n\n\n\n<!--more-->\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/><\/div><\/td><td><div class=\"text codecolorer\">No part of this blogpost could be reproduced, stored in a <br \/>\nretrieval system, or transmitted in any form or by any <br \/>\nmeans, electronic, mechanical or photocopying, recording, <br \/>\nor otherwise, for commercial purposes without the <br \/>\nprior permission of the author.<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">How automation can help with SR-TE in SP network? <\/h2>\n\n\n\n<p>In some (big) networks the BGP-SR-TE is a good signal the SR-TE policies, so that the PE routers can build the SR-TE tunnels without the need to configure them locally. However, the BGP-SR-TE requires a full pledged SDN controller, so that you can generate the SR-TE policy in the backend using some UI\/API and send the policies down to the network elements using the BGP. If you want to have a somewhat simpler setup, you may need need to deploy the tunnels manually. In this case, the automation is your closest ally as it can take the burden of the configuration generation and rolling it out to your devices.<\/p>\n\n\n<div class='code-block code-block-1' style='margin: 8px auto; text-align: center; display: block; clear: both;'>\n<p><a href=\"http:\/\/bit.ly\/2mP3SJy\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"aligncenter wp-image-4479 size-large\" src=\"https:\/\/karneliuk.com\/wp-content\/uploads\/2022\/08\/4_trainings.jpg\" alt=\"\"\/><\/a><\/p><\/div>\n\n\n\n\n<p>In our trainings, the <a rel=\"noreferrer noopener\" href=\"http:\/\/bit.ly\/2mP3SJy\" target=\"_blank\">Live Network Automation Training (10 weeks)<\/a> and <a rel=\"noreferrer noopener\" href=\"https:\/\/bit.ly\/3obN0XQ\" target=\"_blank\">Automation with Nornir (2 weeks)<\/a>, we explore a lot of real use cases, where the automation helps you to validate the state of you network and change it if necessary. You will learn the whole spectre of the automation approaches starting from the text-based automation used in the hyper scalers with the full configuration templated till the model-driven automation with NETCONF\/RESTCONF\/gNMI loaded with YANG data models for Cisco, Nokia, Arista and Cumulus. This knowledge comes with a lot of different exercises with direct console as well as Ansible\/Python and Bash scripts. On top to that, you learn a lot of infrastructure skills such as building and managing Linux, KVM and Docker. <\/p>\n\n\n\n<p>Moreover, we are running our trainings for 2 years already and constantly adopting them to the changes happening in the automation world. Master your automation skills with us.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a href=\"https:\/\/bit.ly\/2ZexI9M\" target=\"_blank\" rel=\"noreferrer noopener\">Start your automation training today.<\/a><\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Brief description<\/h2>\n\n\n\n<p>The Segment Routing Traffic Engineering (SR-TE) tunnels are the important building blocks of the modern Service Provider networks and\/or Data Centre DCIs. <a rel=\"noreferrer noopener\" href=\"https:\/\/bit.ly\/3dUW7d7\" target=\"_blank\">Long ago we already covered the SR-TE tunnels in Nokia SR and Cisco IOS XR based network devices<\/a>. One the problem we were not able solve that time was the absence of the mechanism on the PE router to check if the tunnel is alive or not. See the following picture for better understanding.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1200\" src=\"https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo.png\" alt=\"\" class=\"wp-image-4863\" srcset=\"https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo.png 1920w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-300x188.png 300w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-1024x640.png 1024w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-768x480.png 768w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-1536x960.png 1536w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-640x400.png 640w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-368x230.png 368w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-600x375.png 600w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-1280x800.png 1280w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/04\/224_net_01_sample_topo-736x460.png 736w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<p>The SR-TE tunnel by default doesn&#8217;t have a built-in mechanism to check the connectivity end-to-end, as it is just being computed at the head end router and installed in RIB. Looking into the example above, say, the SR1 has 2 SR-TE tunnels to SR4, which have path diversity and computed using the SR Adj SIDs. If link SR2 (1\/1\/1) &#8211; SR3 (1\/1\/1) is down, the SR1 doesn&#8217;t invalidate the red SR-TE tunnel and sends traffic to SR2 for it, whereas SR2 starts dropping the, as the the corresponding Adj SID points to the interface, which is down. <\/p>\n\n\n\n<p>In contrast. the RSVP-TE is being signalled and periodically sends keep alive messages. As such, it would be able to spot this issue. Does it mean that RSVP-TE being much older than SR-TE is better? Well, not really&#8230;<\/p>\n\n\n\n<p>There are multiple solutions, how you can solve problem:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>You can deploy SDN controller, where you can signal the topology of the network using the BGP-LS and use the PCEP to signal tunnels. The solution is viable, but is very complex and requires a lot of investment (time or money).<\/li><li>You can add the possibility to SR-TE tunnels to send the end-to-end health checks.<\/li><\/ol>\n\n\n\n<p>Back in the days, it was not really possible. However, now we can achieve that using the Seamless BFD (S-BFD). In a nutshell, S-BFD is a modified version of the BFD to address the scalability issue. In Nokia SR OS, it requires way more configuration than a regular BFD, but this is the only option to make the SR-TE adaptive to the link failures. The good thing is that you can tune performance to notice failures very quickly (matter of milliseconds) so that you can do a failure quickly. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Network setup<\/h2>\n\n\n\n<p>Let&#8217;s take a look in the sample lab setup we used to test the solution:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-1024x640.png\" alt=\"\" class=\"wp-image-4884\" srcset=\"https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-1024x640.png 1024w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-300x188.png 300w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-768x480.png 768w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-1536x960.png 1536w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-640x400.png 640w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-368x230.png 368w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-600x375.png 600w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-1280x800.png 1280w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos-736x460.png 736w, https:\/\/karneliuk.com\/wp-content\/uploads\/2021\/05\/nice_topos.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We don&#8217;t show in this article the basic configuration of ISIS or Segment Routing as it is expected you already know how it works. Instead, we are focusing only on the SR-TE and seamless BFD. The IP addressing is relatively straightforward as well as schema of the SR SID&#8217;s and BFD discriminators used in the seamless BFD (see below for further details).<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Refer to the corresponding article to learn how to configure <a rel=\"noreferrer noopener\" href=\"https:\/\/karneliuk.com\/2016\/08\/isis-between-nokia-alcatel-lucent-sr-and-cisco-ios-xr\/\" target=\"_blank\">ISIS<\/a> or <a href=\"https:\/\/karneliuk.com\/2016\/11\/mpls-segment-routing-srping-in-nokia-alcatel-lucent-sr-os-and-cisco-ios-xr\/\" target=\"_blank\" rel=\"noreferrer noopener\">Segment Routing<\/a>.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Usage<\/h2>\n\n\n\n<p>This part covers the details of the configuration of the overall solution. The full configuration is split into 2 big parts, which is the configuration of the seamless BFD framework and the SR-TE policies on top.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#1. Configuration of Seamless BFD<\/h3>\n\n\n\n<p>The first step is to configure the Seamless BFD. Generally, its configuration is covered in <a rel=\"noreferrer noopener\" href=\"https:\/\/documentation.nokia.com\/cgi-bin\/dbaccessfilename.cgi\/3HE15089AAACTQZZA01_V1_7450%20ESS%207750%20SR%207950%20XRS%20and%20VSR%20MPLS%20Guide%2019.10.R1.pdf\" target=\"_blank\">the corresponding configuration guide.<\/a> However, the level of details is a little bit low, so we decided to go deeper.<\/p>\n\n\n\n<p>From the configuration perspective, the seamless BFD consist of the two elements:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Reflector part (configured on the tail-end router for the SR-TE tunnel).<\/li><li>Peer part (configured on the head-end router). <\/li><\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">#1.1. Reflector configuration<\/h4>\n\n\n\n<p>In contrast to an &#8220;ordinary&#8221; BFD, where the discriminator is automatically allocated for each BGP session, for the seamless BFD it shall be configured manually. The following configuration is implemented on SR1:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR1# configure {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seamless-bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reflector &quot;SR1&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; discriminator 524289<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; local-state up<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<p>Each host shall have its own discriminator, so on the other side of the SR-TE, the SR-TE shall have a different number:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR4# configure {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seamless-bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reflector &quot;SR4&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; discriminator 524489<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; local-state up<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; }<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">#1.2. Seamless BFD peer configuration<\/h4>\n\n\n\n<p>The second part of the seamless BFD configuration is the peer: for SR4 the peer is SR1 and for SR1 the peer is SR4 in our topology. The seamless BFD session is destined to the system interface, so pay attention to the topology above for the details of the IP\/discriminator mapping. E.g., from SR1 you need to configure the IP address of the SR4 system&#8217;s interface and SR4 discriminator as seamless BFD peer.<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR1# configure {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; router &quot;Base&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seamless-bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; peer 10.0.255.44 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; discriminator 524489<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; }<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<p>And on the other side:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR4# configure {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; router &quot;Base&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seamless-bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; peer 10.0.255.11 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; discriminator 524289<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; }<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<p>At this stage, we have created the configuration of the peers. However, they won&#8217;t be operational before we map it to the SR-TE policies.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#2. Configuration of SR-TE policies with Seamless BFD<\/h3>\n\n\n\n<p>The mapping of the seamless BFD session to the SR-TE tunnel consist of two steps: creating a BFD policy and applying it to the SR-TE LSP.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">#2.1. Configuration of the BFD policy<\/h4>\n\n\n\n<p>Generally, this configuration shall be applied on the head-end router. However, in our cases the SR-TE tunnels are bidirectional (well, two unidirectional). Therefore, the same configuration shall be created and applied both for SR1 and SR4 ends:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR4# configure {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; router &quot;Base&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd-template &quot;SR_TE_STRICT_TUNNEL&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo-receive 100<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; multiplier 3<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; receive-interval 50<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; transmit-interval 50<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type cpm-np<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; }<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">#2.2. Mapping the BFD policy to SR-TE tunnel<\/h4>\n\n\n\n<p>Final configuration step is to map the created policy to the SR-TE LSP. Here is the configuration of the two SR-TE tunnels with the explicit paths and enabled BFD policies from SR1 to SR4 (configuration from SR4 to SR1 will be mirrored):<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/><\/div><\/td><td><div class=\"text codecolorer\">&amp;#91;gl:configure router &quot;Base&quot; mpls]<br \/>\nA:SR1# info<br \/>\n&nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; path &quot;SR4_explicit_1&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; hop 1 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip-address 10.0.0.1<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type strict<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; hop 2 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip-address 10.0.0.5<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type strict<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; hop 3 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip-address 10.0.0.9<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type strict<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; path &quot;SR4_explicit_2&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; hop 1 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip-address 10.0.0.3<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type strict<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; hop 2 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip-address 10.0.0.7<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type strict<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; hop 3 {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip-address 10.0.0.11<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type strict<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; lsp &quot;SR4_strict_1&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; type p2p-sr-te<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; to 10.0.255.44<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; metric 25<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; path-computation-method local-cspf<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; max-sr-labels {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; additional-frr-labels 4<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd-liveness true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd-template &quot;SR_TE_STRICT_TUNNEL&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; failure-action failover-or-down<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; primary &quot;SR4_explicit_1&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; lsp &quot;SR4_explicit_2&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; admin-state enable<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; type p2p-sr-te<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; to 10.0.255.44<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; metric 25<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; path-computation-method local-cspf<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; max-sr-labels {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; additional-frr-labels 4<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bfd {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd-liveness true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfd-template &quot;SR_TE_STRICT_TUNNEL&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; failure-action failover-or-down<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; primary &quot;SR4_explicit_2&quot; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<p>The overall logic here is that you have two independent explicit paths, which are converted into the label stack using the adjacent labels. Then each LSP is mapped to a single explicit path and have the BFD template enabled. The BFD template should have an action failure-or-down, which means that the LSP will be brought down in case that BFD packets sent inside the MPLS tunnel are not returned as plain IP traffic.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">#2.3. Fallback scenario<\/h4>\n\n\n\n<p>If you carefully take a look on the topology and think about the failure scenarios, you can figure out that there are multiple cases where two outages may result in full traffic loss. For such cases we implemented the fallback to the SR-ISIS, where no load sharing is available, but connectivity continues working.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#3. Validation<\/h3>\n\n\n\n<p>The validation of such service consist from the control plane and data plane verifications.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">#3.1 Control plane<\/h4>\n\n\n\n<p>You can check the the SR-TE LSP as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR4# show router mpls sr-te-lsp &quot;SR1_strict_1&quot; detail <br \/>\n<br \/>\n===============================================================================<br \/>\nMPLS SR-TE LSPs (Originating) (Detail)<br \/>\n===============================================================================<br \/>\nLegend : <br \/>\n&nbsp; &nbsp; + - Inherited<br \/>\n===============================================================================<br \/>\n-------------------------------------------------------------------------------<br \/>\nType : Originating <br \/>\n-------------------------------------------------------------------------------<br \/>\nLSP Name &nbsp; : SR1_strict_1<br \/>\nLSP Type &nbsp; &nbsp; &nbsp; &nbsp;: SrTeLsp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LSP Tunnel ID &nbsp; &nbsp; &nbsp; &nbsp;: 8<br \/>\nLSP Index &nbsp; &nbsp; &nbsp; : 65543 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TTM Tunnel Id &nbsp; &nbsp; &nbsp; &nbsp;: 655369<br \/>\nFrom &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 10.0.255.11<br \/>\nTo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 10.0.255.11<br \/>\nAdm State &nbsp; &nbsp; &nbsp; : Up &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Oper State &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Up<br \/>\nLSP Up Time &nbsp; &nbsp; : 14d 16:01:59 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LSP Down Time &nbsp; &nbsp; &nbsp; &nbsp;: 0d 00:00:00<br \/>\nTransitions &nbsp; &nbsp; : 33 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Path Changes &nbsp; &nbsp; &nbsp; &nbsp; : 33<br \/>\nRetry Limit &nbsp; &nbsp; : 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Retry Timer &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 30 sec<br \/>\nHop Limit &nbsp; &nbsp; &nbsp; : 255 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Negotiated MTU &nbsp; &nbsp; &nbsp; : 9178<br \/>\nPathCompMethod &nbsp;: none &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nMetric &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 25 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nLocal Sr Protec*: preferred &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Label Stack Reduction: Disabled<br \/>\nLoad Bal Wt &nbsp; &nbsp; : N\/A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ClassForwarding &nbsp; &nbsp; &nbsp;: Disabled<br \/>\nInclude Grps &nbsp; &nbsp;: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Exclude Grps &nbsp; &nbsp; &nbsp; &nbsp; : <br \/>\nNone &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; None<br \/>\nEgress Stats &nbsp; &nbsp;: Disabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nBFD Template &nbsp; &nbsp;: SR_TE_STRICT_TUNNEL &nbsp; &nbsp; &nbsp; BFD Ping Intvl &nbsp; &nbsp; &nbsp; : N\/A<br \/>\nBFD Enable &nbsp; &nbsp; &nbsp;: True &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BFD Failure-action &nbsp; : FailoverOrDn<br \/>\nWaitForUpTimer &nbsp;: 4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp;<br \/>\nRevert Timer &nbsp; &nbsp;: Disabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Next Revert In &nbsp; &nbsp; &nbsp; : N\/A<br \/>\nEntropy Label &nbsp; : Enabled+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Oper Entropy Label &nbsp; : Enabled<br \/>\nNegotiated EL &nbsp; : Disabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nVprnAutoBind &nbsp; &nbsp;: Enabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\nIGP Shortcut &nbsp; &nbsp;: Enabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BGP Shortcut &nbsp; &nbsp; &nbsp; &nbsp; : Enabled<br \/>\nIGP LFA &nbsp; &nbsp; &nbsp; &nbsp; : Disabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IGP Rel Metric &nbsp; &nbsp; &nbsp; : Disabled<br \/>\nBGPTransTun &nbsp; &nbsp; : Enabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\nOper Metric &nbsp; &nbsp; : 25 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nPCE Report &nbsp; &nbsp; &nbsp;: Disabled+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\nPCE Control &nbsp; &nbsp; : Disabled &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nMax SR Labels &nbsp; : 6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Additional FRR Labels: 4<br \/>\nPath Profile &nbsp; &nbsp;: None &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nAdmin Tags &nbsp; &nbsp; &nbsp;: None &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp;<br \/>\nPrimary(a) &nbsp; &nbsp; &nbsp;: SR1_explicit_1<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Up Time &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 14d 16:01:59<br \/>\nBandwidth &nbsp; &nbsp; &nbsp; : 0 Mbps &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n===============================================================================<br \/>\n* indicates that the corresponding row element may have been truncated.<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<p>You see that the BFD is enabled and up. To check the status of the seamless BFD session use:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR4# show router bfd seamless-bfd session lsp-name &quot;SR1_strict_1&quot; detail <br \/>\n<br \/>\n===============================================================================<br \/>\nBFD Session<br \/>\n===============================================================================<br \/>\nPrefix &nbsp; &nbsp; &nbsp; &nbsp; : 10.0.255.11\/32<br \/>\nLocal Address &nbsp;: 10.0.255.44<br \/>\nLSP Name &nbsp; &nbsp; &nbsp; : SR1_strict_1<br \/>\nLSP Index &nbsp; &nbsp; &nbsp;: 65543 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Path LSP ID &nbsp; &nbsp; &nbsp;: 54274<br \/>\nFec Type &nbsp; &nbsp; &nbsp; : srTe &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\nOper State &nbsp; &nbsp; : Up &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Protocols &nbsp; &nbsp; &nbsp; &nbsp;: mplsLsp <br \/>\nUp Time &nbsp; &nbsp; &nbsp; &nbsp;: 14d 16:03:56 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Up Transitions &nbsp; : 1<br \/>\nDown Time &nbsp; &nbsp; &nbsp;: None &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Down Transitions : 0<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Version Mismatch : 0<br \/>\n&nbsp;<br \/>\nForwarding Information<br \/>\n&nbsp;<br \/>\nLocal Discr &nbsp; &nbsp;: 28 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Local State &nbsp; &nbsp; &nbsp;: Up<br \/>\nLocal Diag &nbsp; &nbsp; : 0 (None)<br \/>\nLocal Mode &nbsp; &nbsp; : Demand &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\nLocal Min Tx &nbsp; : 50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Local Mult &nbsp; &nbsp; &nbsp; : 3<br \/>\nLast Sent (ms) : 11 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Local Min Rx &nbsp; &nbsp; : 50<br \/>\nType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : cpm-np &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\nRemote Discr &nbsp; : 524289 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Remote State &nbsp; &nbsp; : Up<br \/>\nRemote Diag &nbsp; &nbsp;: 0 (None) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Remote Mode &nbsp; &nbsp; &nbsp;: Async<br \/>\nRemote Min Tx &nbsp;: 50 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Remote Mult &nbsp; &nbsp; &nbsp;: 3<br \/>\nRemote C-flag &nbsp;: 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\nLast Recv (ms) : 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Remote Min Rx &nbsp; &nbsp;: 3<br \/>\n===============================================================================<br \/>\n===============================================================================<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<p>You can also validate the full list of the active seamless BFD sessions:<\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/><\/div><\/td><td><div class=\"text codecolorer\">A:SR1# show router bfd seamless-bfd session lsp-path<br \/>\n<br \/>\n===============================================================================<br \/>\nLegend:<br \/>\n&nbsp; Session Id = Interface Name | LSP Name | Prefix | RSVP Sess Name | Service Id<br \/>\n&nbsp; wp = Working path &nbsp; pp = Protecting path<br \/>\n===============================================================================<br \/>\nBFD Session<br \/>\n===============================================================================<br \/>\nSession Id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;State &nbsp; &nbsp; &nbsp;Tx Pkts &nbsp; &nbsp;Rx Pkts<br \/>\n&nbsp; Rem Addr\/Info\/SdpId:VcId &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Multipl &nbsp; &nbsp; Tx Intvl &nbsp; Rx Intvl<br \/>\n&nbsp; Protocols &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Type &nbsp; &nbsp; LAG Port &nbsp; &nbsp; LAG ID<br \/>\n&nbsp; Loc Addr<br \/>\n-------------------------------------------------------------------------------<br \/>\n10.0.255.44\/32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Up &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;N\/A &nbsp; &nbsp; &nbsp; &nbsp;N\/A<br \/>\n&nbsp; 10.0.255.44 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 50 &nbsp; &nbsp; &nbsp; &nbsp; 50<br \/>\n&nbsp; mplsLsp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cpm-np &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;N\/A &nbsp; &nbsp; &nbsp; &nbsp;N\/A<br \/>\n&nbsp; 10.0.255.11<br \/>\n10.0.255.44\/32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Up &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;N\/A &nbsp; &nbsp; &nbsp; &nbsp;N\/A<br \/>\n&nbsp; 10.0.255.44 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 50 &nbsp; &nbsp; &nbsp; &nbsp; 50<br \/>\n&nbsp; mplsLsp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cpm-np &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;N\/A &nbsp; &nbsp; &nbsp; &nbsp;N\/A<br \/>\n&nbsp; 10.0.255.11<br \/>\n-------------------------------------------------------------------------------<br \/>\nNo. of BFD sessions: 2<br \/>\n===============================================================================<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">#3.2 Data plane<\/h4>\n\n\n\n<p>The validation of the date plane is pretty straightforward. As long as you shut down one of the links on one path, the traffic is switched to a second LSP and vice versa within 150 ms, so customer&#8217;s traffic is slightly affected.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cooperation<\/h2>\n\n\n\n<p>This solution was created with the cooperation with <a href=\"https:\/\/www.linkedin.com\/in\/pau-nadeu-rabat-8a594619\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pau Nadeu Rabat<\/a> and implemented in the Service Provider Network in Spain. Thanks a lot for an opportunity to work together on that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons learned<\/h2>\n\n\n\n<p>Back in the days (2019) I was already testing the SR-TE tunnels in the Vodafone. However, that days the seamless BFD was doing just its first steps and it was not yet supported in the production images of the network operation systems. It was quite an interesting exercise to brush up that experience and learn how the pure service provider technologies has evolved since that time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>The Segment Routing and Segment Routing Traffic Engineering are the key building blocks of modern service provider networks. However, SR-TE lacks the mechanism of the end-to-end path validation, which existed in RSVP-TE. The seamless BFD fixes this issue, so that together they provide the high level or programmability and resiliency. Take care and good bye.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Support us<\/h2>\n\n\n\n<style>\r\n        .wpedon-container .wpedon-select,\r\n        .wpedon-container .wpedon-input {\r\n            width: 171px;\r\n            min-width: 171px;\r\n            max-width: 171px;\r\n        }\r\n    <\/style><div class='wpedon-container wpedon-align-center'><label id='wpedon-1919-name-label'>Support new interop and automation articles at karneliuk.com<br \/><span class='price'><\/span>EUR<\/label><br \/>\r\n\t\t<script>\r\n\t\tjQuery(document).ready(function(){\r\n\t\t\tjQuery('#dd_5f6178155ece0c090531e308aa451627').on('change', function() {\r\n\t\t\t  jQuery('#amount_5f6178155ece0c090531e308aa451627').val(this.value);\r\n              jQuery('#price_5f6178155ece0c090531e308aa451627').val(this.value);\r\n\t\t\t});\r\n\t\t});\r\n\t\t<\/script>\r\n\t\t<br \/><label style='font-size:11pt !important;'>I want to support with:<\/label><br \/><select class='wpedon-select' name='dd_5f6178155ece0c090531e308aa451627' id='dd_5f6178155ece0c090531e308aa451627'><option value='9.99'>9.99 EUR<\/option><option value='4.99'>4.99 EUR<\/option><option value='24.99'>24.99 EUR<\/option><option value='49.99'>49.99 EUR<\/option><option value='99.99'>99.99 EUR<\/option><option value='199.99'>199.99 EUR<\/option><\/select><br \/><br \/><form target='_blank' action='https:\/\/www.paypal.com\/cgi-bin\/webscr' method='post' class='wpedon-form'><input type='hidden' name='cmd' value='_donations' \/><input type='hidden' name='business' value='MZVY3WH2X7HPN' \/><input type='hidden' name='currency_code' value='EUR' \/><input type='hidden' name='notify_url' value='https:\/\/karneliuk.com\/wp-admin\/admin-post.php?action=add_wpedon_button_ipn'><input type='hidden' name='lc' value='en_US'><input type='hidden' name='bn' value='WPPlugin_SP'><input type='hidden' name='return' value='http:\/\/karneliuk.com\/thanks\/' \/><input type='hidden' name='cancel_return' value='' \/><input class='wpedon_paypalbuttonimage' type='image' src='https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif' border='0' name='submit' alt='Make your payments with PayPal. It is free, secure, effective.' style='border: none;'><img alt='' border='0' style='border:none;display:none;' src='https:\/\/www.paypal.com\/en_US\/i\/scr\/pixel.gif' width='1' height='1'><input type='hidden' name='amount' id='amount_5f6178155ece0c090531e308aa451627' value='9.99' \/><input type='hidden' name='price' id='price_5f6178155ece0c090531e308aa451627' value='9.99' \/><input type='hidden' name='item_number' value='karneliuk.com-general' \/><input type='hidden' name='item_name' value='Support new interop and automation articles at karneliuk.com' \/><input type='hidden' name='name' value='Support new interop and automation articles at karneliuk.com' \/><input type='hidden' name='custom' value='1919'><input type='hidden' name='no_shipping' value='1'><input type='hidden' name='no_note' value='0'><input type='hidden' name='currency_code' value='EUR'><\/form><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">P.S.<\/h2>\n\n\n\n<p>If you have further questions or you need help with your networks, our team is happy to assist you. Just <a href=\"https:\/\/training.karneliuk.com\/free-consultation\/\" target=\"_blank\" rel=\"noreferrer noopener\">book a free slot<\/a> with us. Also don\u2019t forget to share the article on your social media, if you like it.<\/p>\n\n\n\n<p>BR,<\/p>\n\n\n\n<p>Anton Karneliuk <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello my friend, For a long time we haven&#8217;t posted blogs about pure network technologies. However, recently we were working on some interesting use case, which so far is not yet covered at a level of the working details nowhere in the internet. As such, we decided to share with you our findings and working&hellip;<\/p>\n","protected":false},"author":1,"featured_media":4887,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[218,42,70,122,220,219],"class_list":{"0":"post-4861","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-network","8":"tag-bfd","9":"tag-mpls","10":"tag-nokia","11":"tag-segment-routing","12":"tag-service-provider","13":"tag-sr-te"},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/posts\/4861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/comments?post=4861"}],"version-history":[{"count":22,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/posts\/4861\/revisions"}],"predecessor-version":[{"id":4886,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/posts\/4861\/revisions\/4886"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/media\/4887"}],"wp:attachment":[{"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/media?parent=4861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/categories?post=4861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/karneliuk.com\/wp-json\/wp\/v2\/tags?post=4861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}