FRR BGP配置是否需要像Cisco一样添加指向null0的静态路由?
FRR BGP宣告网段是否需要配置null0静态路由的专业建议
核心前提
FRR的BGP默认行为和Cisco IOS完全一致:在BGP同步功能默认关闭的前提下,network命令要宣告的网段,必须在FRR本地路由表中存在精确匹配的活跃路由条目,才会被加入BGP路由表并对外宣告。
是否需要配置null0静态路由的判断标准
- 如果待宣告的网段已经有精确匹配的活跃路由(比如直连路由、其他动态路由协议学习到的同前缀路由),不需要额外配置指向null0的静态路由
- 如果待宣告的是汇总网段,或是本地没有对应前缀的活跃路由,必须配置该静态路由,否则BGP不会对外宣告对应前缀
针对Linux底层路由表异常顾虑的解决方案
你担心的null0路由进入Linux内核路由表导致异常的问题,完全可以通过FRR自带的配置参数解决,无需修改原有BGP宣告逻辑:
你可以在配置静态null0路由时添加no install-to-kernel参数,配置示例如下:
router bgp 64511 network 101.10.0.0/24 ! ip route 101.10.0.0/24 null0 250 no install-to-kernel
该配置的效果是:这条静态路由仅存在于FRR内部的路由表中,满足BGPnetwork命令的宣告要求,但是不会被同步到Linux内核的路由表,完全不会影响Linux系统的原生转发逻辑。
如果不添加上述参数,正常配置null0静态路由也几乎不会引发异常:
- 你可以将该静态路由的管理距离设为最大值250,只要存在其他同前缀、管理距离更小的路由,这条静态路由永远不会被优选,不会干扰正常流量转发
- 就算该路由被优选,匹配到的流量会直接被丢弃,反而可以避免明细路由失效时引发的路由环路,是BGP网段宣告的行业通用最佳实践。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

