1.BGP
Border Gateway Protocol,边界网关协议,运行在自制系统间的路由协议,主要作用是互联网AS(自治系统)之间的互联,主要功能在于控制路由的传播和优选路由。
中国网通、中国电信、中国铁通和一些大的民营IDC运营商都具有AS号,全国各大网络运营商多数均通过BGP协议与自身的AS号实现多线互联。
BGP是目前全球领先的双线技术。使用此方案实现多线路互联时,需要为IDC在CNNIC(中国互联网信息中心)或APNIC(亚太网络信息中心)申请IP地址段和AS号,然后通过BGP协议将此段IP地址广播到其它网络运营商的网络中。使用BGP协议互联后,网络运营商的所有骨干路由设备将会比较到IDC机房IP段的路由,优选更佳的路由,以保证不同网络运营商用户的高速访问。
2.IBGP
Internel BGP,内部边界网关协议,如果两个交换BGP报文的对等实体属于同一个自治系统,那么这两个对等实体就是IBGP对等实体;
3.EBGP
Externel BGP,外部边界网关协议,如果两个交换BGP报文的对等实体属于不同的自治系统,那么这两个对等实体就是EBGP对等实体;
4.IGP
Interior Gateway Protocol内部网关协议,主要作用是发现和计算自治域内的路由信息,包括RIP,OSPF,IS-IS,IGRP等
5.EGP
Exterior Gateway Protocol外部网关协议,一种自治系统相邻两个网关之间交换路由信息的协议,BGP是最新的外部网关协议
6 .AS 自治系统英文全称(autonomous system)
意思是一组内部管理下的网络,它们之间共享同一个路由选择方法。它由地区再划分并必须由IANA分配一个单独的16位数字。地区通常连接到其他地区,使用路由器创建一个自治系统。作用就是在运行BGP等外部路由协议时用于区分不同自治系统。
一般来说,AS内部的大多数路由器只知道本AS的拓扑结构,不知道其它AS的内部拓扑,也就不能直接知道去其它AS的路由,因为IGP类协议只在AS内部运行。但AS内会有一些骨干路由器和其它AS的骨干路由器之间运行EGP类协议,这些骨干路由器知道去其它AS的路由后会把这些信息通过IGP类协议重新发布,让本AS内的路由器也知道去其它AS的路由。
实际上这可以说是一种路由的分层和聚合,因为让每个路由器都知道整个因特网的拓扑是不现实和可笑的,所有才把网络划分成不同的AS,简化了网络,就像DNS分一级域名和二级域名一样。
另外,IGP和BGP不能直接比较,因为不是一个层次的,IGP是内部网关协议,对应的是EGP即外部网关协议。IGP分RIP、OSPF等,而BGP只是EGP的一种。
7.EBGP与IBGP之间的区别
我们知道,在自治系统内部使用IGP路由协议,而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议).BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP和IBGP两种,EBGP用于在不同自治系统之间,但IBGP,书上说它是应用于自治系统内部,可是在自治系统内部我们是使用IGP.这就和"BGP是应用于不同自治系统之间"产生矛盾,那么IBGP存在的意义,比如说某种情况,需要使用到IBGP,它在网络中起到的作用.EBGP与IBGP之间的区别,EBGP在网络中又起什么作用?
7.1为什么要有IBGP
- 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内部的路由器学习到的路由数目可以控制在可接受的范围之内。
- 路由环路的问题。BGP是靠路由属性来防止路由环路的,例如AS_PATH属性,假如说没有IBGP协议,那么当所有BGP路由重分发到IGP中后,路由属性必然丢失,这就破坏了BGP的路由环路防止机制,产生了路由环路的隐患。
那么引申一下,既然IBGP能够传送所有的路由前缀,为什么还需要IGP?
7.2为什么需要IGP
- IBGP之间是TCP连接,也就意味着IBGP邻居采用的是逻辑连接的方式,两个IBGP连接不一定存在实际的物理链路。所以需要有IGP来提供路由,以完成BGP路由的递归查找。
- BGP协议本身实际上并不发现路由,BGP将路由发现的工作全部移交给了IGP协议,它本身着重于路由的控制。因此,如果没有IGP,那么BGP也就毫无用处了。
7.3 EBGP与IBGP的区别
-
路由环路的避免措施不一样,IBGP强制规定ibgp speaker不允许把从一个ibgp邻居学习到的前缀传递给其它ibgp邻居,因此IBGP要求逻辑全连接。EBGP没有这样的要求,EBGP对路由环路的避免是通过AS_PATH属性来实现的。
-
使用的BGP属性不同,例如IBGP可以传递LOCAL_PREF(本地优先属性),而EBGP不行;
-
IBGP有同步的要求,而EBGP没有同步的要求;
-
IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可,而EBGP下一般情况下都要求EBGP邻居之间存在物理连接。
EBGP在网络中起什么作用?这个题目太大了,EBGP我认为是在不同的AS之间提供路由的传递以及路由的控制,了解了BGP属性的用法,也就了解了EBGP的作用。
7.4 使用BGP三大理由
- 大量路由需要承载,IGP只能容纳上千条,而BGP可以容纳上万条;
- 支撑MPLS/VPN应用,传递客户VPN路由;
- 策略能力强,可以更好的完成策略决策和路由控制;