我已经使用 qugga 在两个路由器上设置了 BGP。当我关闭包含我正在通告的 IP 块的接口时,zerba 会从其表中删除该路由,但 bgpd 会继续通告它。我可以看到它仍然通过相邻的 BGP 表以及show ip bgp nei 172.16.14.1 ad
正在执行通告的路由器的命令进行通告。此接口包含正在通告的完整路由,因此不存在聚合。
正如任何人之前遇到过这种情况一样......它似乎从根本上破坏了路由协议的主要功能......
更新:
因此在路由器中我有以下 BGP 表。
so-rt1# show ip bgp
BGP table version is 0, local router ID is 172.16.14.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 12.12.12.12 200 0 5555 i
* 15.15.15.0/24 172.16.14.2 0 100 0 i
*> 0.0.0.0 0 32768 i
Total number of prefixes 2
对于我宣布的 15.15.15.0/24 网络,直接连接路由(最后一个条目)是首选路由。如果我关闭包含 15.15.15.0/24 的接口,不仅直接连接路由不会从 BGP 表中删除,而且它仍然是首选路由。因此,关闭该接口后,BGP 表保持完全相同。
Zebra 知道直接连接的 15.15.15.0/24 路由不再存在。我在show ip route
接口启动时看到它,当我关闭它时条目就消失了。所以我认为问题是 BGP 表不知何故没有从 zebra 获得我认为应该获得的更新。
答案1
如果我理解正确的话,您有一个到网络的 IGP(或本地)路由,并且您通过 BGP 宣布了该路由。当路由在 IGP(或本地)中消失时,您希望 BGP 提取该路由。
如果是这样的话,那你就做错了(TM),Quagga 不会让你轻易做到这一点。摘自网络命令手册:
BGP: network A.B.C.D/M
This command adds the announcement network.
router bgp 1
network 10.0.0.0/8
This configuration example says that network 10.0.0.0/8 will be announced
to all neighbors. Some vendors' routers don't advertise routes if they
aren't present in their IGP routing tables; bgp doesn't care about IGP
routes when announcing its routes.
这是因为,如果您将 IGP 信息导出到 BGP,则很容易出现抖动。互联网上已经有足够多的路由流失,将路由信息从 IGP 重新分配到 BGP 被认为是不好的做法。BGP 不是 IGP,不要将其滥用为 IGP ;)
此外,我实在看不出有什么好的情况可以从互联网上拉取路由(这会导致抖动,并且您可能会面临几个小时或几天的受阻风险),除非您在特定路由消失后最终陷入分裂 AS 的情况,并且想要保护自己免受这可能导致的奇怪路由问题的影响。(在这种情况下,您应该考虑是否希望路由器保持在线状态。分裂 AS 的情况很糟糕!)
正确的解决方案 (TM) 是让路由保持开启并尽可能稳定,而不管 IGP 正在做什么。如果与网络的连接断开,只需在本地丢弃流量即可。如果通往网络的 IGP 路由断开,请确保不要将其环回传输提供商。
基本规则是“永远不要更改您的 BGP 公告,除非它是整个互联网必须知道的事情”。您的 IGP 是否不稳定并不是互联网其余部分关心的事情。
编辑:
据我了解,您的网络如下所示:
Provider (AS 5555) --------------------- Provider (AS 5555)
(12.12.12.12) |
| eBGP |eBGP
| |
Router1---------15.15.15.0/24---------------Router2
172.16.14.1 172.16.14.2
| iBGP |
--------------------------------------------
您的问题是,如果您关闭 Router1 上通向 15.15.15.0/24 的接口,您希望它停止通告网络,因此您将数据转移到 172.16.14.2。这种对等策略的自动更改不是您通常会做的事情,据我所知,Quagga 不支持这种更改。相反,您需要通过 IGP 重新路由数据并保持对等静态。如果您要更改对等,您需要更改 MED(MULTI_EXIT_DISC)以将流量引导到正确的路由器。
请注意,如果关闭 15.15.15.0/24 会分裂您的 AS,您将面临其他故障模式,而且这些模式都不是好事。