2009/03/11

BGP/IBGP/EBGP/IGP各得其所

先看一道CCIP-BGP的考题(引自Pass4sure 642-661):

Q: Please Match proper relationship between the correct description and the EBGP,IBGP or IGP category.

1. has the lowest default admin distance
2. has the highest default admin distance
3. not affected by route flaps external to the AS
4. propagates the internal subnets and BGP next-hop
5. propagates routing updates to an external AS
6. propagates the external routes within the AS


I. EBGP
II. IBGP
III. IGP

A. I-(1,5);II-(2,6);III-(3,4)
B. I-(1,3);II-(2,5);III-(4,6)
C. I-(2,5);II-(1,6);III-(3,4)
D. I-(3,5);II-(1,6);III-(2,4)


文章转自:http://kachy.net/?p=457


Answer: alpha

这道题主要就是考察路由协议之间的比较,先简单做个说明。

路由选择协议根据运行区域范围可以分为以下两大类:
1、IGP(内部网关协议):用于在自治系统内部交换路由信息。RIP、IGRP、EIGRP、OSPF都属于IGP。
2、EGP(外部网关协议):用于在不同自治系统之间交换路由信息。BGP(边界网关协议)就属于EGP。


此题重点在BGP知识点上面。

为什么要有IBGP

我们知道,在自治系统内部使用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万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的。另外对于运行RIPv1的路由器来说,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的作用。

没有评论:

发表评论