EBGP/IBGP/IGP有何区别?

网络技术是从1990年代中期发展起来的新技术 , 它把互联网上分散的资源融为有机整体 , 实现资源的全面共享和有机协作 , 使人们能够透明地使用资源的整体能力并按需获取信息 。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等 。当前的互联网只限于信息共享 , 网络则被认为是互联网发展的第三阶段 。我们知道 , 在自治系统内部使用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属性来实现的 。
【EBGP/IBGP/IGP有何区别?】 2、使用的BGP属性不同 , 例如IBGP可以传递LOCAL_PREF(本地优先属性) , 而EBGP不行 。
3、IBGP有同步的要求 , 而EBGP没有同步的要求
4、IBGP不需要IBGP邻居之间有物理连接 , 只需要逻辑连接即可 , 而EBGP下一般情况下都要求EBGP邻居之间存在物理连接 。
EBGP在网络中起什么作用?这个题目太大了 , EBGP我认为是在不同的AS之间提供路由的传递以及路由的控制 , 了解了BGP属性的用法 , 也就了解了EBGP的作用 。

    推荐阅读