我们知道,在自治系统内部使用IGP路由协议;而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议)。BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP和IBGP两种。EBGP用于在不同自治系统之间,但IBGP,书上说它是应用于自治系统内部,可是在自治系统内部我们是使用IGP。这就和"BGP是应用于不同自治系统之间"产生矛盾,那么IBGP存在的意义,比如说某种情况,需要使用到IBGP,它在网络中起到的作用?EBGP与IBGP之间的区别?EBGP在网络中又起什么作用?
为什么要有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路由的递归查找。
2、BGP协议本身实际上并不发现路由,BGP将路由发现的工作全部移交给了IGP协议,它本身着重于路由的控制。因此,如果没有IGP,那么BGP也就毫无用处了。
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邻居之间存在物理连接。
EBGP在网络中起什么作用?这个题目太大了,EBGP我认为是在不同的AS之间提供路由的传递以及路由的控制,了解了BGP属性的用法,也就了解了EBGP的作用。
以上转自原博文链接:http://blog.sina.com.cn/s/blog_6ceed3280101ehja.html
以下转自博文链接:http://blog.163.com/czj_99/blog/static/56896226201001084419854/
EBGP与IBGP的区别:
EBGP —— (External Border Gateway Protocol) 外部边界网关协议,用于在不同的自治系统间交换路由信息。
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邻居之间存在物理连接。
关键提点:
BGP路由表是独立于IGP路由表的,但是这两个表之间可以进行信息的交换,也就是“再分布”技术(Redistribution)。信息的交换有两个方向:从BGP注入IGP,以及从IGP注入BGP。前者是将AS外部的路由信息传给AS内部的路由器,而后者是将AS内部的路由信息传到外部网络,这也是路由更新的来源。把路由信息从BGP注入IGP涉及到一个重要概念——同步(Synchronization)。同步规则,是指当一个AS为另一个AS提供了过渡服务时,只有当本地AS内部所有的路由器都通过IGP的路由信息的传播收到这条路由信息以后,BGP才能向外发送这条路由信息。当路由器从IBGP收到一条路由更新信息时,在转发给其他EBGP对等体转之前,路由器会对同步性进行验证。只有IGP认识这个更新的目的时(即IGP路由表中有相应的条目),路由器才会将其通过EBGP转发;否则,路由器不会转发该更新信息。同步规则的主要目的是为了保证AS内部的连通性,防止路由循环的黑洞。但是在实际的应用中,一般都会将同步功能禁用,而使用AS内IBGP的全网状连接结构来保证连通性,这样即可以避免向IGP中注入大量BGP路由,加快路由器处理速度,又可以保证数据包不丢失。要安全的禁用同步,需要满足以下两个条件之一:1,所处的AS是单口的,或者说是末端AS(Stub AS)――即是指只有一个点与外界网络连接。2,虽然所处的AS是过渡型的(指一个AS可以通过本地AS,与第三方AS建立连接的),但是在AS内部的所有路由器都运行BGP。第2种情况是很常见的,因为AS内所有的路由器都有BGP信息,所以IGP只需要为本地AS 传送路由信息。大部分的网络设备在实现BGP时,都提供了禁用同步的开关。将IGP路由信息注入BGP,是路由更新的来源。它直接影响到因特网的路由稳定性。
因此,怎么将从一个AS学到的路由通告给另外一个AS,要视过渡AS内部的情况而定。
规则是:
1、bgp路由器会把从ebgp对端学到的路由通告给所有bgp邻居,包括ibgp邻居和ebgp邻居;
2、从ibgp邻居处学到的路由是否通告给自己ebgp对端,这就要视本AS内的egp和igp路由表是否同步而定,而是否需要同步——就要看本AS内的“过渡”路由器之间没有有没有跑全互联ibgp,如果是全互联的ibgp,那么就不需要同步,像上面举的例子,如果只在R2、R4之间建立ibgp邻居,R3上不与R2、R4建立ibgp邻居,这时就需要同步,而同步就要求把从R1学到的路由重分布给AS2的igp。
3、在Internet上,R1上就不只只有网段A这么一条路由了,现在的Internet的bgp路由条目已经超过10万条,如果要重分布给igp,igp路由器只有死路一条,因为igp路由的特点就是算法复杂,耗费cpu和内存。因此才要求过渡AS要ibgp全互联。如果不全互联,就得采用路由反射器、bgp联盟其他办法来解决,本质却是一样的。
实验图描绘:
这个例子还不大好举。其实你照着我的描述画一下图,就明白了。
图可以这么来画:
R1属于AS1,有一个直连网段A,R1的另一个接口与R2相连;
R2、R3,R4属于AS2,R2、R3、R4依次“串联”,就是R2与R3连,R3再和R4连,AS2内部跑ospf协议,R2与R1之间跑ebgp;
R5属于AS3,R5与R4相连,R5与R4之间跑ebgp;
然后你就考虑:在R2、R3、R4之间跑两两都跑ibgp和都不跑ibgp两种情况下,怎么将到网段A的路由通告到R5,根据规则,一步步推理,你就明白了。