如上图拓扑所示:虽然AR1与AR2,AR3与AR4都建立了ebgp关系,但是AR1还是学不了AR2上的路由,因为AR2区域内运行的是ospf,而要让AR1学习到igp的路由,必要要将igp路由变成bgp路由才可以。将igp路由变成bgp路由的方法有两种:一种是通过network的方式来使igp路由变成bgp路由。先进入AR2的bgp进程中,然后将AR2上通过ospf学习到的路由宣告进bgp中即可。network必须精确匹配掩码,而且network方式存在缺陷,假如AR1学习到的ospf路由有1000条,那我们就必须手动network1000条。
具体配置命令如下:
[AR2]bgp 100 AS编号为200的bgp进程中
network 5.5.5.5 255.255.255.255 学习到的ospf路由使其成为bgp路由
network 12.1.1.0 255.255.255.0 学习到的ospf路由使其成为bgp路由
然后在AR2和AR1上通过display bgp routing-table可以看到学习到的bgp路由,注意,不是所有学习到的bgp路由都会出现在路由表中,还要与通过其他形式学习到的路由进行比较,根据优先级与开销值来决定最终是那些路由浮现在路由表中。第二种方式是通过import的方式来使igp路由变成bgp路由。同样,先进入AR2的bgp进程中,然后直接import引入即可。配置命令如下:
[AR2]bgp 100 AS编号为200的bgp进程中
import-route ospf 1 导入ospf路由使其成为bgp路由
<AR2>refresh bgp all export 在发出bgp路由的方向上刷新bgp路由表
<AR2>refresh bgp all import 在学习到bgp路由的方向上刷新bgp路由表
注意:bgp只传递最优路由,bgp从ebgp收到的路由会向它所有的BGP邻居进行通告,如果是传给ibgp的话,下一跳地址不发生改变,如果是传给ebgp的话,下一跳才发生改变。例如:AR2学习到的路由再传给AR5时,下一跳不发生改变可能会导致igp内的路由器无法访问AR1由器。因为,bgp学习到的路由要能出现在路由表中必须是最优路由,如果此时egp传递过来的路由信息的下一跳在路由表中并没有相关记录,那么bgp的路由表中就不会选择这条路由为最优路由,那将导致ibgp路由器没办法ping通ebgp路由器,除非传递过来的下一跳地址是可达的。为了保证下一跳可达,常常将ebgp传递过来的下一跳地址改成自身的环回口地址,然后再传递到各个ibgp路由器。
配置命令如下:
peer 5.5.5.5 next-hop-local 从egp上学到的路由信息传递给5.5.5.5时,下一跳地址变为自己的环回口地址
BGP防环机制:
IBGP水平分割:从IBGP获得的路由不会通过给它的IBGP邻居,虽然iBGP水平分割机制解决了环路问题,却导致有些路由不可到达
bgp引入路由med bgp用network引入路由
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
干货收藏!Calico的BGP RouteReflector策略实践
了解容器网络组件Calico的BGP Route Reflector模式如何使用。
Calico RR模式 kubernetes Calico BGP 容器