Question regarding an unreachable protocol
Hello dear Maria! Hello bird community! I have a question to ask you. We realized that there is one BGP session which bird sees it as an unreachable destination, thus it doesn't advertise its prefixes to the other peers, since it does not go to the master table. We run v2.0.7 and hereby I paste some outputs and then some configs on this regard. The protocol is up. It is pingable and traceable. Yet shows unreachable. bird> show protocol R49624xB Name Proto Table State Since Info R49624xB BGP --- up 11:34:07.198 Established bird> show route protocol R49624xB Table T49624_6: 2a0b:880::/32 unreachable [R49624xB 11:34:08.214 from 2001:7f8:4c::ffff:b] (100) [i] bird> sh route table master6 2a0b:880::/32 Network not found -bash-4.2# ping6 2001:7f8:4c::ffff:b PING 2001:7f8:4c::ffff:b(2001:7f8:4c::ffff:b) 56 data bytes 64 bytes from 2001:7f8:4c::ffff:b: icmp_seq=1 ttl=64 time=1.04 ms 64 bytes from 2001:7f8:4c::ffff:b: icmp_seq=2 ttl=64 time=0.977 ms ##### function is_martian6() prefix set martians; { martians = [ 3ffe::/16+, 2001:db8::/32+, 2001::/33+, 2002::/17+, ::/8+, fe00::/9+, ff00::/8+ ]; #if net.ip = :: then return true; if (net.len < 19) || (net.len > 48) then return true; if net ~ martians then return true; return false; } function bgp_in_ibgp() { if (is_martian6()) then return false; if gw = 2001:7f8:4c::ffff:a then { if net ~ [ 2a0b:880::/32 ] then { bgp_path.prepend(myas); return true; } } if gw = 2001:7f8:4c::ffff:b then { if net ~ [ 2a0b:880::/32 ] then { bgp_path.prepend(myas); return true; } } return false; } protocol pipe P49624_6 { table master6; peer table T49624_6 ; import where bgp_in_ibgp(); export all; } protocol bgp R49624xB { local rs_IPv6 as myas; neighbor as myas; neighbor 2001:7f8:4c::ffff:b; passive on; connect retry time 6000; ipv6 { table T49624_6; import limit 50 action disable; import all; import keep filtered on; export all; }; } ##### Some insight would be very appreciated! Take care of yourselves and stay healthy and home :D cheers! Irène -- Irene Lalioti Network Engineer Fondation RESTENA 2, avenue de l'Université L-4365 Esch/Alzette Tel: +352 424409 1 Fax: +352 422473
Hi, Please check that you have direct interface routes in your bird's table. Probably the next hop in your bgp route is not directly reachable from the bird's point of view. You might need to add "protocol direct { ... }" for example. Or maybe you have not direct next hop in your routes. As far as I know, bird advertises such routes still, but if they marked unreachable - no matter how high localpref the have, other routes are preferred over it. On Wed, Mar 18, 2020 at 2:24 PM Irene Lalioti <irene.lalioti@restena.lu> wrote:
Hello dear Maria! Hello bird community!
I have a question to ask you. We realized that there is one BGP session which bird sees it as an unreachable destination, thus it doesn't advertise its prefixes to the other peers, since it does not go to the master table.
We run v2.0.7 and hereby I paste some outputs and then some configs on this regard. The protocol is up. It is pingable and traceable. Yet shows unreachable.
bird> show protocol R49624xB Name Proto Table State Since Info R49624xB BGP --- up 11:34:07.198 Established
bird> show route protocol R49624xB Table T49624_6: 2a0b:880::/32 unreachable [R49624xB 11:34:08.214 from 2001:7f8:4c::ffff:b] (100) [i]
bird> sh route table master6 2a0b:880::/32 Network not found
-bash-4.2# ping6 2001:7f8:4c::ffff:b PING 2001:7f8:4c::ffff:b(2001:7f8:4c::ffff:b) 56 data bytes 64 bytes from 2001:7f8:4c::ffff:b: icmp_seq=1 ttl=64 time=1.04 ms 64 bytes from 2001:7f8:4c::ffff:b: icmp_seq=2 ttl=64 time=0.977 ms
##### function is_martian6() prefix set martians; { martians = [ 3ffe::/16+, 2001:db8::/32+, 2001::/33+, 2002::/17+, ::/8+, fe00::/9+, ff00::/8+ ]; #if net.ip = :: then return true; if (net.len < 19) || (net.len > 48) then return true; if net ~ martians then return true; return false; } function bgp_in_ibgp() { if (is_martian6()) then return false; if gw = 2001:7f8:4c::ffff:a then { if net ~ [ 2a0b:880::/32 ] then { bgp_path.prepend(myas); return true; } } if gw = 2001:7f8:4c::ffff:b then { if net ~ [ 2a0b:880::/32 ] then { bgp_path.prepend(myas); return true; } } return false; } protocol pipe P49624_6 { table master6; peer table T49624_6 ; import where bgp_in_ibgp(); export all;
} protocol bgp R49624xB { local rs_IPv6 as myas; neighbor as myas; neighbor 2001:7f8:4c::ffff:b; passive on; connect retry time 6000; ipv6 { table T49624_6; import limit 50 action disable; import all; import keep filtered on; export all; }; } #####
Some insight would be very appreciated! Take care of yourselves and stay healthy and home :D cheers! Irène
-- Irene Lalioti Network Engineer Fondation RESTENA 2, avenue de l'Université L-4365 Esch/Alzette
Tel: +352 424409 1 Fax: +352 422473
Thanks a lot Alexander for your feedback! I have direct protocol disabled all along like this protocol direct { disabled; # Disable by default ipv6; # Connect to default IPv6 table } and also the local route in the table : -bash-4.2# ip -6 route show table 60 | grep 2001:7f8:4c::/64 2001:7f8:4c::/64 dev peering metric 1024 pref medium .. So then I may need to define there these routes.. Have a nice day! irene On 18/03/2020 15:52, Alexander Zubkov wrote:
Hi,
Please check that you have direct interface routes in your bird's table. Probably the next hop in your bgp route is not directly reachable from the bird's point of view. You might need to add "protocol direct { ... }" for example. Or maybe you have not direct next hop in your routes. As far as I know, bird advertises such routes still, but if they marked unreachable - no matter how high localpref the have, other routes are preferred over it.
On Wed, Mar 18, 2020 at 2:24 PM Irene Lalioti <irene.lalioti@restena.lu> wrote:
Hello dear Maria! Hello bird community!
I have a question to ask you. We realized that there is one BGP session which bird sees it as an unreachable destination, thus it doesn't advertise its prefixes to the other peers, since it does not go to the master table.
We run v2.0.7 and hereby I paste some outputs and then some configs on this regard. The protocol is up. It is pingable and traceable. Yet shows unreachable.
bird> show protocol R49624xB Name Proto Table State Since Info R49624xB BGP --- up 11:34:07.198 Established
bird> show route protocol R49624xB Table T49624_6: 2a0b:880::/32 unreachable [R49624xB 11:34:08.214 from 2001:7f8:4c::ffff:b] (100) [i]
bird> sh route table master6 2a0b:880::/32 Network not found
-bash-4.2# ping6 2001:7f8:4c::ffff:b PING 2001:7f8:4c::ffff:b(2001:7f8:4c::ffff:b) 56 data bytes 64 bytes from 2001:7f8:4c::ffff:b: icmp_seq=1 ttl=64 time=1.04 ms 64 bytes from 2001:7f8:4c::ffff:b: icmp_seq=2 ttl=64 time=0.977 ms
##### function is_martian6() prefix set martians; { martians = [ 3ffe::/16+, 2001:db8::/32+, 2001::/33+, 2002::/17+, ::/8+, fe00::/9+, ff00::/8+ ]; #if net.ip = :: then return true; if (net.len < 19) || (net.len > 48) then return true; if net ~ martians then return true; return false; } function bgp_in_ibgp() { if (is_martian6()) then return false; if gw = 2001:7f8:4c::ffff:a then { if net ~ [ 2a0b:880::/32 ] then { bgp_path.prepend(myas); return true; } } if gw = 2001:7f8:4c::ffff:b then { if net ~ [ 2a0b:880::/32 ] then { bgp_path.prepend(myas); return true; } } return false; } protocol pipe P49624_6 { table master6; peer table T49624_6 ; import where bgp_in_ibgp(); export all;
} protocol bgp R49624xB { local rs_IPv6 as myas; neighbor as myas; neighbor 2001:7f8:4c::ffff:b; passive on; connect retry time 6000; ipv6 { table T49624_6; import limit 50 action disable; import all; import keep filtered on; export all; }; } #####
Some insight would be very appreciated! Take care of yourselves and stay healthy and home :D cheers! Irène
-- Irene Lalioti Network Engineer Fondation RESTENA 2, avenue de l'Université L-4365 Esch/Alzette
Tel: +352 424409 1 Fax: +352 422473
-- Irene Lalioti Network Engineer Fondation RESTENA 2, avenue de l'Université L-4365 Esch/Alzette
Tel: +352 424409 1 Fax: +352 422473
On 18.03.20 16:33, Irene Lalioti wrote:
Thanks a lot Alexander for your feedback! I have direct protocol disabled all along like this
protocol direct { disabled; # Disable by default ipv6; # Connect to default IPv6 table }
Hi Irene, Enable the direct protocol and reload conf, that should get these routes into bird, so then routes via the neighbor should get reachable. I don't know if in this case it makes a difference to use 'direct' in the bgp protocol stanza. Bernd
On Wed, Mar 18, 2020 at 04:53:16PM +0100, Bernd Naumann wrote:
On 18.03.20 16:33, Irene Lalioti wrote:
Thanks a lot Alexander for your feedback! I have direct protocol disabled all along like this
protocol direct { disabled; # Disable by default ipv6; # Connect to default IPv6 table }
Hi Irene, Enable the direct protocol and reload conf, that should get these routes into bird, so then routes via the neighbor should get reachable.
I don't know if in this case it makes a difference to use 'direct' in the bgp protocol stanza.
Hi Yes, using 'direct' option in BGP protocol should be enugh in this case. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Hello! Thanks to all of you for your answers. I really appreciate it. My team got it to work finally in a diff way. But I will have it in mind ;) Good day, Irene On 18/03/2020 17:06, Ondrej Zajicek wrote:
On Wed, Mar 18, 2020 at 04:53:16PM +0100, Bernd Naumann wrote:
On 18.03.20 16:33, Irene Lalioti wrote:
Thanks a lot Alexander for your feedback! I have direct protocol disabled all along like this
protocol direct { disabled; # Disable by default ipv6; # Connect to default IPv6 table }
Hi Irene, Enable the direct protocol and reload conf, that should get these routes into bird, so then routes via the neighbor should get reachable.
I don't know if in this case it makes a difference to use 'direct' in the bgp protocol stanza. Hi
Yes, using 'direct' option in BGP protocol should be enugh in this case.
-- Irene Lalioti Network Engineer Fondation RESTENA 2, avenue de l'Université L-4365 Esch/Alzette Tel: +352 424409 1 Fax: +352 422473
participants (4)
-
Alexander Zubkov -
Bernd Naumann -
Irene Lalioti -
Ondrej Zajicek