BGP存在的意义以及IGP对它的作用


为什么要有IBGP,原因如下: 
  1、IGP的能力限制,IGP处理路由的条目有限,而目前internet上核心路由器的路由表已经超过10万条。假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP中,这样做的缺点很明显:第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP本身也无法处理这样大的路由数量;第二,如果非要让IGP来处理,那么根据IGP的处理原则,假如这10万路由中任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,更为严重的是,假如其中某一条路由出现路由抖动的情况,例如端口反复UP/DOWN,这会导致所有的IGP路由器每时每刻都不得不把10万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的。另外对于运行RIP V1的路由器来说,10万条路由的定期更新,这根本就是无法接受的事情,除去带宽占用率不谈,我想,也只有少量高端的GSR以及TSR能够有这样的性能吧。很显然,我们不可能让网络中所有的路由器都是GSR和TSR,如果真是这样,那么Cisco、juniper以及华为等厂家就要偷笑了。例如:AS100----AS200---AS300,假定AS100/200/300各有100台路由器,而AS100中有1W条路由要传递要AS300中,而AS200的路由器不需要学习AS100的路由。如果没有IBGP的话,那么这1W条路由都必须被重分发到AS200的IGP中去,这样的话,相当于AS200中所有的100台路由器都增加了1W条路由。如果利用IBGP的话,那么AS200中只有运行IBGP的路由器会学习到这1W条路由,其它运行IGP的路由器都不会学习到这1W条路由。并且由于BGP的路由控制能力大大强于IGP的路由控制能力,因此运行IBGP的路由器比运行IGP的路由器能更好的对这1W条路由做一些路由策略的处理,从而保证整个AS内部的路由器学习到的路由数目可以控制在可接受的范围之内。 
  
  2、路由环路的问题。BGP是靠路由属性来防止路由环路的,例如AS_PATH属性,假如说没有IBGP协议,那么当所有BGP路由重分发到IGP中后,路由属性必然丢失,这就破坏了BGP的路由环路防止机制,产生了路由环路的隐患。 
  
  那么引申一下,既然IBGP能够传送所有的路由前缀,为什么还需要IGP? 
  
  1、IBGP之间是TCP连接,也就意味着IBGP邻居采用的是逻辑连接的方式,两个IBGP连接不一定存在实际的物理链路。所以需要有IGP来提供路由,以完成BGP路由的递归查找。 (IGP相当于为BGP铺好路,BGP相当于货车)
  
  2、BGP协议本身实际上并不发现路由,BGP将路由发现的工作全部移交给了IGP协议,它本身着重于路由的控制。因此,如果没有IGP,那么BGP也就毫无用处了。 

IBGP――内部BGP协议(IBGP)的主要作用是向你的内部路由器提供更多信息。IBGP路由器必须以全网状结构相连,以防止路由环回。如果使用了路由反射器或路由联盟,那么IBGP网状结构可能遭遇收敛问题,而导致路由黑洞。
   
    EBGP与IBGP的区别:
   
    1、路由环路的避免措施不一样,IBGP强制规定ibgp speaker不允许把从一个IBGP邻居学习到的前缀传递给其它IBGP邻居,因此IBGP要求逻辑全连接。EBGP没有这样的要求,EBGP对路由环路的避免是通过AS_PATH属性来实现的。
   
    2、使用的BGP属性不同,例如IBGP可以传递LOCAL_PREF(本地优先属性),而EBGP不行。
   
    3、IBGP有同步的要求,而EBGP没有同步的要求
   
    4、IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可,而EBGP下一般情况下都要求EBGP邻居之间存在物理连接。
    
其实IGP和BGP的区别很大,IGP主要是为了方便路由的传输,IGP就是Interior Gateway Protocol,只适合内部小型网络,所以呢,对比于静态路由,确实很方便对吧。
就说RIP和OSPF,RIP获取路由的方式是邻居直接通告路由,OSPF的方式是,域内的路由我们由LSA1,2以自己为根计算出来。
可是BGP呢,它实际上不仅仅是为了路由,在一些STUB,例如我们的一些小公司,我们只有一个出口,直接在出口写个默认路由,所有到外网的数据包丢给ISP就行了,而ISP只要写一条回程路由,这就搞定一个业务了。
但是这家公司如果很大呢,例如谷歌,里面有很多台路由器,连接N个分公司,而又希望每个数据能尽快的传输,因为美国有很多ISP,所以有的ISP去墨西哥速度比较快,有的去英国比较快,那么BGP就是一个很好的控制协议。
还有就是ISP里面用得BGP,我们都知道,目前INTERNET的路由汇聚起来了也有三十八万条,你在里面运行个OSPF,一条路由抖动不就要重新计算SPF了吗,那还得了,而且每个路由器都要SPF计算,而且IGP也承受不了那么多路由条目,这时候只能用BGP了。
BGP最大的优势在于没有路由选择算法,只有选路规则。是在AS(自治系统)间直接提取别的路由选择协议如OSPF、ISIS等计算的结果来用。用于AS之间的路由。因为没有算法,所以每条路由条目占用系统资源和带宽资源较小,适合全球互联网使用。
     EBGP在网络中起什么作用?这个题目太大了,EBGP我认为是在不同的AS之间提供路由的传递以及路由的控制,你了解了BGP属性的用法,也就了解了EBGP的作用。

关于在同一个AS里面同时存在IGP/IBGP/EBGP的路由的时候,首先我们知道,IBGP的AD为200,大于所有IGP,因为在同一个AS内,肯定选择IGP(BPG选路消耗资源大)。而EBGP的AD 为20,小于所有IGP,因为到往其他AS,那肯定直接选择EBGP的路由,而不是在IGP里面兜兜转转再发给EBGP,更加不会选IBGP(实际上BGP的TTL值只有1,第二跳的时候会失效,所以不可能会IBGP)。

你可能感兴趣的:(BGP存在的意义以及IGP对它的作用)