D041BGP协议原理及配置学习目标叙述BGP路由协议的原理配置BGP路由协议调试和维护BGP协议处理大规模网络中BGP的应用学习完本课程,您应该能够:课程内容BGP路由协议的原理BGP路由属性配置BGP路由协议处理大规模网络中BGP的应用BGP简介BGP(BorderGatewayProtocol)是一种自治系统间的动态路由发现协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统(AS)序列属性的路径可达信息,来构造自治系统的拓扑图,从而消除路由环路并实施用户配置的策略。BGP协议经常用于ISP之间BGP协议从1989年就开始使用。它最早发布的三个版本分别是RFC1105(BGP-1)、RFC1163(BGP-2)和RFC1267(BGP-3),当前使用的是RFC1771(BGP-4)。它适用于分布式结构并支持无类域间路由CIDR(ClasslessInterDomainRouting)BGP协议概述BGP是外部路由协议,用来在AS之间传递路由信息是一种距离矢量的路由协议,从设计上避免了环路的发生为路由附带属性信息传送协议:TCP,端口号179支持CIDR(无类别域间选路)路由更新:只发送增量路由丰富的路由过滤和路由策略特性描述BGP是一种外部路由协议,与OSPF、RIP等的内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最好的路通过携带AS路径信息,可以彻底解决路由环路问题。使用TCP作为其传输层协议,提高了协议的可靠性。BGP-4支持无类域间路由CIDR(ClasslessInterDomainRouting)。这是较BGP-3的一个重要改进。CIDR以一种全新的方法看待IP地址,不再区分A类网、B类网及C类网。例如一个非法的C类网络地址192.213.0.0(255.255.0.0)采用CIDR表示法192.213.0.0/16就成为一个合法的超级网络,其中/16表示子网掩码由从地址左端开始的16比特构成。路由更新时,BGP只发送增量路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息BGP协议基本概念什么是自治系统(AS)为什么引入自治系统这一概念自治系统内部的路由协议自治系统之间的路由协议——BGP自治系统自治系统AS(AutonomousSystem):由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合,每个自治系统都有唯一的自治系统编号,这个编号由因特网授权的管理机构分配的。自治系统的编号范围是1到65535,其中1到65411只注册的因特网编号,65412到65535是专用网络编号。BGP工作机制AS1AS7AS6AS5AS4AS3AS2发送BGP消息的路由器称为BGP发言人(Speaker),它不断的接收或产生新路由信息,并将它广告(Advertise)给其它的BGP发言人。当BGP发言人收到来自其它自治系统的新路由广告时,如果该路由比当前已知路由好、或者当前还没有可接受路由,它就把这个路由广告给自治系统内所有其它的BGP发言人。一个BGP发言人也将同它交换消息的其它的BGP发言人称为对等体(peer),若干相关的对等体可以构成对等体组(group)BGP两种邻居-IBGP和EBGPBGP在路由器上以下列两种方式运行:IBGP(InternalBGP)EBGP(ExternalBGP)当BGP运行于同一自治系统(AS)内部时,称为IBGP;当BGP运行于不同自治系统之间时,称为EBGP提示:一般要求EBGP对等体之间是有物理上的直接连接而IBGP对等体之间不一定有物理上的直接连接,但必须保证逻辑上全连接(TCP连接能够建立即可)BGP两种邻居-IBGP和EBGPEBGPEBGPRTBRTCIBGPRTARTDRTEBGP路由通告原则多条路径时,BGPSpeaker只选最优的给自己使用BGPSpeaker只把自己使用的路由通告给相邻体BGPSpeaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP)BGPSpeaker从IBGP获得的路由不向它的IBGP相邻体通告BGPSpeaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定连接一建立,BGPSpeaker将把自己所有BGP路由通告给新相邻体BGP与IGP同步BGP协议规定:一个BGP路由器不将从内部BGP对等体得知的目的地通告给外部对等体,除非该目的地也能通过IGP得知的。若一个路由器能通过IGP得知该目的地,则可认为路由能在AS中传播,内部通达已有了保证。BGP同步BGP的主要任务之一就是向其它自治系统发布该自治系统的网络可达信息。因此,BGP必须与IGP(如RIP、OSPF等)同步来通告路由。同步是指BGP必须等待直到IGP在其所在自治系统中成功传播该选路信息,才向其它自治系统通告过渡信息。也就是说,当一个路由器从IBGP对等体收到一个关于目的地的更新信息,在把它通告给其它EBGP对等体之前,要试图验证该目的地通过自治系统内部能否到达(即验证该目的地是否存在于IGP,非BGP路由器是否可传递业务量到该目的地。若IGP认识这个目的地,才通告其它的EBGP对等体,否则将把这个路由当作与IGP不同步来,不进行通告BGP同步EBGPEBGPRTBRTCIBGPRTARTDRTERTFS0:1.1.1.2/24E0:10.1.1.1/24S0:1.1.1.1/24S1:2.1.1.2/24S0:2.1.1.1/24AS100AS200AS300使BGP与IGP同步的简单方法是将BGP发现的网络路由全部引入到IGP路由表中,再由BGP发布出去成为BGP路由的途径之一:纯动态注入18.0.0.1/8OSPFRTBAS200OSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由纯动态地注入到RTB的BGP路由表中纯动态注入:路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去成为BGP路由的途径之一:半动态注入18.0.0.1/8RTBAS200OSPFOSPF发现路由18.0.0.1/8把IGP(OSPF)发现的路由半动态地注入到RTB的BGP路由表中半纯动态注入:路由器有选择的将IGP路由协议动态获得的路由信息注入到BGP中去成为BGP路由的途径之三:静态注入18.0.0.1/8AS200人为配置静态路由18.0.0.1/8把人为配置的静态路由注入到RTB的BGP路由表中RTB静态注入:路由器将静态配制的某条路由信息注入到BGP中去BGP报文种类BGP报文有四种类型:Open:打招呼“你好,跟我交个朋友吧!”KeepAlive:我还活着呢,别不理我Update:有新闻......Notification:我不跟你玩了!BGP系统作为高层协议运行在一个特定的路由器上。系统初启时通过发送整个BGP路由表交换路由信息,之后为了更新路由表只交换更新消息(UpdateMessage)。系统在运行过程中,是通过接收和发送KeepaliveMessage消息来检测相互之间的连接是否正常的。BGP报文头BGP报文的格式是一样的:都是“报文头+报文体”的格式,下面给出的是BGP报文头:Marker(16byte)Length(2byte)Type(1byte)Open报文Open报文是由报文头加如下结构构成的。Version12345670123456701234567012345670MyAutonomousSystemHoldTimeBGPIdentifierOptionalParametersLenOptionalParametersKeepAlive报文Marker(16byte)Length(2byte)Type(1byte)KeepAlive报文只有报文头。Update报文UnfeasibleRoutesLength12345670123456701234567012345670WithdrawnRoutesPathAttributeLengthPathAttributesNetworkLayerReachabilityInformationUpdate报文由报文头加如下结构构成。Notification报文Notification报文由报文头加如下结构构成。ErrorCode12345670123456701234567012345670ErrorSubcodeData612345错误代码错误类型消息头错OPEN消息错UPDATE消息错保持时间超时状态机错退出BGP协议的状态机ActiveOpen-sentOpen-confirmEstablishedIdleConnectConnect-RetrytimerexpiryTCPconnectionfailsConnect-RetrytimerexpiryStartOthersTCPconnectionfailsErrorErrorErrorKeepAlivetimerexpiryKeepAlivepacketreceived1.KeepAlivetimerexpiry2.Updatereceived3.KeepAlivereceivedCorrectOPENpacketreceivedTCPconnectionsetupTCPconnectionsetupOthersBGP协议中消息的应用通过TCP建立BGP连接时,发送open消息连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端路由信息稳定后此时要定时发送KEEPALIVE消息以保持BGP连接的有效性当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对端课程内容BGP路由协议的原理BGP路由属性配置BGP路由协议处理大规模网络中BGP的应用BGP的路由属性表达了路由的特征过渡和非过渡的必遵和可选的便于扩展截至目前共16种属性常见BGP路由属性1、Origin2、AS-Path3、Nexthop4、MED5、Local-Preference6、Atomic-Aggregate7、Aggregator8、Community9、Originator-ID10、Cluster-List11、DestinationPref(MCI)12、Advertiser(Baynet)13、Rcid-Path(Baynet)14、MP_Reach_NLRI15、MP_Unreach_NLRI16、Extended_Communities起点(Origin)属性一般的,具体的实现按如下方式决定一条路由的Origin属性某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP路由是通过EGP得到的,则origin属性为EGP其他情形下,Origin属性都为Incomplete优先值:IGP(0)EGP(1)Incomplete(2)BGP首先选择优先值最小的AS路径(AS-Path)属性D(18.0.0.0/8)AS200AS300AS400AS100AS500RTARTB30.0.0.130.0.0.2D,dl400300200D,d2500200D,d1400300200D,d2500200下一跳要点(1)BGP在向IBGP通告从其它EBGP得到的路由时,不改变路由的下一跳属性,本地BGP将从EBGP得到的路由的下一跳属性直接传递给IBGP(2)BGP在向EBGP通告路由时,下一跳属性是本地BGP与对端连接的端口地址(3)对于可以多路访问的网络(例如:以太网或FR),下一跳是连接目的网络的路由器的多路访问的接口下一跳(NextHop)属性18.0.0.0/820.0.0.0/8RTARTCRTBRTD19.0.0.0/821.0.0.221.0.0.110.0.0.210.0.0.310.0.0.1AS100AS200