爱思纳特信息技术(北京)有限公司1/54爱思纳特信息技术(北京)有限公司边界网关协议——BGP爱思纳特信息技术(北京)有限公司2/54目录一、BGP简介二、BGP特征三、BGP路径属性(attributes)四、BGP选路规则五、大型网络的BGP爱思纳特信息技术(北京)有限公司3/54一、BGP简介一、BGP简介爱思纳特信息技术(北京)有限公司4/54一、BGP简介随着科技的高速发展,网络日益扩大,网络设备数量的增多,路由条目数量的增多,IGP已经不能满足当前网络状况基于上面这些原因,需要将网络进行划分,划分出来的区域范围即autonomoussystem(AS),IGP路由协议的更新只能在同一个AS内传递,全网通信,即不同AS之间通信,需要在AS之间运行的协议,即边界网关协议(BorderGatewayProtocol),即BGP。BGP是距离夭量路由协议注:虽然EIGRP也有AS概念,但是与BGP的AS不同。爱思纳特信息技术(北京)有限公司5/54二、BGP特征二、BGP特征爱思纳特信息技术(北京)有限公司6/54二、BGP特征BGP的自治系统(AS)BGP的AS号码的分配,是由InternetAssignedNumberAuthority(IANA)机构来统一规划和分配的。通常我们所用的BGP号码范围是1-65535,这其中又分为公有AS与私有AS。公有AS范围是1-64511,私有AS范围是64512-65535。跟IP地址类似,公有AS用于互联网,且不可重复。私有AS不可用在互联网。以下是中国几个公司的公有AS号码AS36678CTUSA–中国电信美国公司AS23724中国电信IDCAS4816广东电信AS4815上海电信AS9394铁通AS4847CNIX-APChinaNetworks中国互联网交换中心AS4808北京网通AS4837网通骨干爱思纳特信息技术(北京)有限公司7/54二、BGP特征BGP邻居由于BGP运行在整个互联网当中,BGP路由器要传递庞大路由信息,因此因此需要让BGP路由器之间的路由传递具有高可靠性和高准确性,所以BGP路由器之间的数据传输使用了TCP协议,端口号为179,并且指的是会话的目标端口号为179,而会话源端口号是随机的。由于BGP使用了TCP协议传递,所以两台路由器只要能够正常通信,就能建立起BGP邻居。但是BGP的邻居要手工指定。BGP-speaker:也可以叫BGP路由器或BGP发言者,是指配置了BGP进程的路由器BGP-peer:当两台BGP-speaker形成了邻居之后,就被称为BGP-peer。例:下图中R1与R2都为BGP邻居R1R2R1R2R3爱思纳特信息技术(北京)有限公司8/54二、BGP特征BGP的消息类型BGP所有的消息都采用单播的方式经TCP连接传递给邻居。BGP使用以下4种消息类型:open(打开)消息keepalive(保持激活)消息update(更新)消息notification(通告)消息爱思纳特信息技术(北京)有限公司9/54二、BGP特征BGP几种状态BGP建立邻居后,通过发送keepalive,来维持邻居关系,每60s一次,Holdtime为180s,即180s没有收到邻居的keepalive消息后,便认邻居消失,则断开与邻居的连接。BGP在建立邻居关系时,经历以下几个过程:Idle:BGP进程被启动或被重置,这个状态是等待开始Connect:检测到有peer要尝试建立TCP连接。Active:尝试和peer建立Tcp连接,如有故障,回到Idleopensent:Tcp连接已建立,BGP发送一个OPEN消息给对方peer,然后切换到opensent状态,如果失败,则切换到active状态。Openconfirm:收到peer的OPEN消息,并等待keepalive消息,收到keepalive则转为Established,如果收到notification则回到idle状态。Established:从对端peer收到keepalive,并开始交换数据收到keepalive后,holdtimer都会重置,如果收到notification就会回到idle状态。爱思纳特信息技术(北京)有限公司10/54二、BGP特征BGP更新源由于BGP不能主动在网络中寻找邻居,必须手工指定邻居的地址,BGP会将数据包发往指定的地址,来请求建立邻居,除此之外BGP发送的请求数据包除了写明目标IP地址外,还要写上自己的IP地址,即BGP源地址。为了BGP的稳定性,采用逻辑端口来建立BGP邻居,即loopback端口R1R2Lo027.27.2.2Lo027.27.1.127.27.12.127.27.12.227.27.21.127.27.21.2爱思纳特信息技术(北京)有限公司11/54二、BGP特征BGPTTL一台BGP路由器,只能属于一个AS,在建立BGP邻居时,自己和对方路由器属于同一个AS,则邻居关系为internalBGP(iBGP),如果属于不同AS则邻居关系为externalBGP(eBGP)。考虑到安全问题,BGP建立外部邻居时要求邻居必须与自己直接,而iBGP则可以是任意距离,这是通过控制BGP数据包的TTL来实现的。EBGP建立邻居时发送的数据包TTL为1,而iBGP建立邻居时的TTL为最大,即255。但是建立eBGP的TTL值可以修改,最大255爱思纳特信息技术(北京)有限公司12/54二、BGP特征BGPAS-pathBGP的路由可能穿越多个AS,运行BGP的网络通常非常大,因此,从一个AS出去的路由,可能在经过几次转发后又会回到原来的AS中,最终形成环路。因此BGP在将路由发给eBGP邻居时,会将自己的AS号写在路由中,eBGP邻居收到路由后,再发给他的AS邻居时,除了保留之前的AS号码,也会把自己的AS号码写入其中。这样在路由中就形成了AS-path。爱思纳特信息技术(北京)有限公司13/54二、BGP特征AS10AS20AS30AS50AS40BGPAS-path如下图所示,一条路由从AS10发出后,到达AS20后,AS-path为“10”到达AS40后,AS-path为“20,10”,到达AS50后,AS-path为“4020,10”。而AS40将路由发给AS30时,AS-path为“40,20,10”,由AS30把路由再传回到AS10时,AS-path为“30,40,20,10”,AS10收到路由后,发现有自己的AS10会丢弃此路由。爱思纳特信息技术(北京)有限公司14/54二、BGP特征iBGP防环eBGP可以通过AS-path来防环,iBGP防环机制为:一台BGP路由器从iBGP邻居收到的路由,不能传递给其它,iBGP邻居,只能传递给eBGP。R1R2R3R4R6R5AS10AS20AS30如图所示,R1从R6收到的路由,会转发给R3和R4,但是R3,R4不会把路由转发给R2。由于R5是R3的eBGP邻居,所以,R5有从AS10来的路由。要让R2收到AS10的路由,让R2与R1建立BGP会话,即R1与R2之间也要建立邻居关系。除此之外也可以BGProuter-reflector和BGPconfederation的方式来实现路由全网传递爱思纳特信息技术(北京)有限公司15/54二、BGP特征BGP路由表运行了BGP协议的的路由器会把由BGP得到的路由与普通路由分开存放,所以BGP会有两张路由表,一张是存放普通路由的路由表,IGP路由表,通过showiproute可以看到,另外一张就是BGP路由表,通过showipbgp查看,若要让BGP邻居之前传递BGP路由,需要BGP路由表中有路由才行。路由加入BGP路由表通过以下几种方法:将IGP路由导入BGP路由表将其他路由重分布进BGP通过邻居获得BGP的邻居分为两种,eBGP和iBGP,所以BGP的路由的AD值也有区分,如果路由是从eBGP学到的,AD值为20(优于任何IGP协议);从iBGP学到的路由AD值为200(优先级低于任何IGP协议)。爱思纳特信息技术(北京)有限公司16/54二、BGP特征IBGP与IGP同步BGP有IBGP与IGP同步的规则,规则如下:学习自IBGP邻居的路由在进入IGP路由表或被宣告给BGP对等体之前,必须首先通过IGP来知晓该路由。此规则作用是:可以防止AS内部形成BGP路由黑洞可以关闭此特性。如下图:R1R2R3R1R2R1R3R4R5爱思纳特信息技术(北京)有限公司17/54三、BGP路径属性三、BGP路径属性爱思纳特信息技术(北京)有限公司18/54三、BGP路径属性路径属性是所宣告BGP路由的特性。对于IGP路由协议,有多条路径可以到达同一目的地时,则根据最小metric值来选择最优路径。而BGP会比较BGP路径属性值。BGP路径属性可以划分为以下四类:公认强制(well-knownmandatory)公认自选(well-knowndiscretionary)可选可传递(optinaltransitive)可选不可传递(optionalnotransitive)爱思纳特信息技术(北京)有限公司19/54三、BGP路径属性公认强制(well-knownmandatory)故名思意,公认强制属性是所有运行BGP路由器都必须支持的属性。并且在将路由信息发给其他BGP邻居时,必须在路由中写入公认强制属性。没有公认强制属性的路由被BGP路由器视为无效而丢弃。此类型的BGP路由属性有三个:origin,next_hop,AS_path爱思纳特信息技术(北京)有限公司20/54三、BGP路径属性公认自选(well-knowndiscretionary)公认自选属性并不像公认强制属性那么严格,任何一台运行BGP的路由器都必须支持公认自选属性,必须理解和认识公认自选属性,但是为路由写入公认自选属性并不是必须的,是否要为路由写入公认自选属性可以自由决定,为路由写上公认自选属性之后,所有BGP路由器都能认识和理解,并且都会自动保留和传递该属性。例如:local-pref,atomic_aggregate爱思纳特信息技术(北京)有限公司21/54三、BGP路径属性可选可传递(optionaltransitive)并不是所有运行BGP的路由器都能理解和支持可选可传递属性,路由的可选可传递属性是任意写入的,其它BGP路由器并不一定能理解,也并不一定能保留和传递该属性,但是当为路由设置了可选可传递属性后,可以明确要求BGP路由器保留和传递该属性。例如:aggregator,community爱思纳特信息技术(北京)有限公司22/54三、BGP路径属性可选不可传递(optionalnotransitive)如果是可选不可传递属性,无法识别该属性的BGP进程可以忽略Update消息中包括的该属性,并且不将该路由路径传递给BGP邻居。例如:multi_exit_disc(MED),originator_id,cluster_list爱思纳特信息技术(北京)有限公司23/54三、BGP路径属性Origin属性origin是公认强制属性,指定了路由的更新来源。它是确定优选路由的因素之一,origin属性指定的路由来源有如下几种:IGP:NLRI是从源AS的协议中学到的,拥有最高优先级,如果路由是通过network语句从IGP路由表中学到的,那么该BGP路由的源就是IGPEGP:NLRI是从外部网关协议中学到的,EGP的优先级次于IGP。不完全的(incomplete):NLRI是从其他渠道学习到的,拥有最低优先级,BGP通过重分发制学习到的路由将携带不完全路由来源属性。爱思纳特信息技术(北京)有限公司24/54三、BGP路径属性AS_path属性AS_path属性为公认强制属性,该属性利用一串AS号来描述去往由NLRI指定的目的地的AS间路径或路由。通常会选择BGPAS_path短的路由,但是特殊性况下必须要选择AS_path长的路由,可以通过修改AS_path属性来决定