当前位置: 首页 > >

《BGP设计与实现》一2.4 理解内部BGP

发布时间:

本节书摘来自异步社区《BGP设计与实现》一书中的第2章,第2.4节,作者【美】Randy Zhang , Micah Bartell,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 理解内部BGP

BGP设计与实现

继续考虑图2-2,假设R3需要向AS 65002中的R7传播前缀,那么这里有几种选择来完成这项任务。



一种方法是让R3把所有的BGP前缀重分布到IGP中,IGP把它们通告给R4、R5和R6。接着,让R5和R6把这些前缀重分布回BGP,并把它们分别通告给各自的eBGP邻居??R7和R8。但是,这种策略有一些问题。


IGP不是被设计用来处理这里可能包含的路由数量的。完全的Internet表已经超过了10万条前缀。很多IGP需要周期性地刷新前缀信息,这会进一步导致网络的不稳定和额外的系统资源消耗,并且给常规的路由选择更新带来显著的带宽需求。前缀数量的增长导致发生路由抖动(route flapping)的可能性更大,路由抖动会引起严重的稳定性和收敛性问题。


BGP信息被重分布进IGP后会丢失所有的BGP属性,包括AS_PATH属性。AS_PATH属性的丢失破坏了BGP环路防止机制。例如,当前缀在R4上被重分布回BGP时,同样的这条前缀也会被发送回R2,因为AS_PATH属性中只包含65001。重分布也会导致任何策略属性的丢失,这些策略属性是为BGP学到的前缀所设置的。


比较明智的选择是使用内部BGP(internal BGP,iBGP)。当R3通过iBGP把前缀通告给R5时,R3不会在AS_PATH中添加自己的AS号。事实上,如果更新来自于iBGP对等体,Cisco IOS甚至不检查AS_PATH环路。如果没有这个额外的AS_PATH信息,路由选择信息环路就会在iBGP域中形成。


如果允许R3把前缀通告给R5,但是不允许R5把它从iBGP学到的前缀通告给其他iBGP对等体,例如,R4和R6,那么就可以避免环路。但是,这样的解决办法需要所有的iBGP宣告者全连接(fully meshed)。例如,R3需要与R4、R5以及R6建立iBGP对等会话。在iBGP宣告者数目很大的自治系统中,全连接会带来扩展性的问题。这个问题的解决办法涉及第7章讲述的路由反射和联盟。


使用iBGP传送前缀信息会带来其他一些小问题。如果BGP能够传送所有的前缀,那么还需要IGP吗?


IGP肯定是需要的。图2-2中,R3并不与R6直连。如果没有某种形式的路由选择信息存在,那么R3如何与R6建立iBGP会话呢?答案就是让IGP为自治系统内部提供基础的路由可达性信息。内部BGP从未被设计成在没有IGP的情况下使用,而是与IGP配合使用。iBGP路由通常需要IGP来递归解析。表2-1说明了iBGP与IGP的一些不同之处。










相关资源:《BGP设计实现》中文版 pdf



友情链接: