JunOS:防止MP-BGP重置会话

当配置MP-BGP时,在Juniper硬件上,可能会出现(不明显的)邻居重建情况。 原因在Junuper知识库KB20870中进行了详细描述,在此简要介绍一下我的评论。


如您所知,使用VPN时会使用多个路由表。 我们将对2个主要的感兴趣: vrf.inet.0bgp.l3vpn.0 (在下文中,描述了L3VPN的情况,但是对于其他将BGP作为信令协议的服务也是如此)。


bgp.l3vpn.0表包含从BGP邻居收到的所有路由。


将特定PE路由器的直接/静态路由放置在vrf.inet.0表中,同时还会导入来自bgp.l3vpn.0表的邻居的满足导入策略(如果已配置)的入站路由。
同时,不会发生从vrf.inet.0bgp.l3vpn.0的导出, 并且 会将路由直接通告给邻居。


如果路由器充当路由反射器,或者存在MP eBGP邻居,则将路由放置在vrf.inet.0表和bgp.l3vpn中 。 在这种情况下,将与本地路线进行比较,并(如有必要)选择最佳路线。


因此,路由器可以两种定义的模式之一运行:


  • 路由器上没有配置路由器反射器,也没有eBGP邻居。
  • 路由器是路由反射器和/或在其上有eBGP邻居。

更改模式需要重新启动MP-BGP会话。 显然,这可以在以下拓扑中看到:



在第一个版本(图1)中,提出了经典的全网状iBGP方案。 现在想象我们需要添加R4路由器。 由于一个或另一个原因,我们决定通过将R1设置为R4的路线反射器来实现此目的(图2)。 在R1上执行路由反射器的设置将需要重新安装所有MP-BGP会话(使用路由器R2和R3),这将导致服务中断。


为了避免这种情况,建议将路由器牢固地转换为第二操作模式。 一种方法是创建虚拟eBGP组。 例如:


group fake-vpn { type external; description "## Preventing mpbgp sessions flap ##"; passive; family inet { any; family inet-vpn { any; family iso-vpn { unicast; family l2vpn { signaling; family evpn { signaling; family inet-mvpn { signaling; family inet-mdt { signaling; neighbor 192.0.2.1 { peer-as 65536; } 

AS:65536和IP:192.0.2.1绝对可以是任何东西,并且被动模式使您可以避免不必要的尝试从路由器建立不存在的会话。


当它可能有用时:


  • 网络上没有专用的路由反射器。 RR的作用是网络的核心路由器。 同时,它们的角色可能会发生变化(例如,从P路由器更改为P / RR,反之亦然);
  • eBGP接口可能会与MP-BGP系列一起出现,例如Inter-AS。

Source: https://habr.com/ru/post/zh-CN429486/


All Articles