DA000011 BGP路由协议 ISSUE1.0
第1章 BGP协议概述
1.5 BGP路由通告原则
BGP路由通告原则???多条路径时,BGP Speaker只选最优的给自己使用BGP Speaker只把自己使用的路由通告给相邻体BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP)BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告BGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定连接一建立,BGP Speaker将把自己所有BGP路由通告给新相邻体??? BGP 的路由通告原则:
多条路径时,BGP Speaker只选最优的给自己使用; BGP Speaker只把自己使用的路由通告给相邻体;
BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP);
BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告;
BGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定;
连接一建立,BGP Speaker将把自己所有BGP路由通告给新相邻体。 这些通告原则都是BGP的设计者在设计BGP 路由协议时硬性规定的,这里我们不深究其原因。
9
DA000011 BGP路由协议 ISSUE1.0
第1章 BGP协议概述
1.6 BGP同步
BGP协议规定:一个BGP 路由器不将从内部BGP对等体得知的路由信息通告给外部对等体,除非该路由信息也能通过IGP得知。若一个路由器能通过IGP得知该路由信息,则可认为路由能在AS中传播,内部通达已有了保证。 BGP的主要任务之一就是向其它自治系统发布该自治系统的网络可达信息。如胶片所示,RTB会把去往10.1.1.1/24 的路由信息封装在UPDATE报文中,通过由RTC、RTD建立的TCP 连接通告给RTE,如果RTE不考虑同步问题,直接接受了这样一条路由信息并通告给RTF。那么,如果RTF 或RTE有去往10.1.1.1/24 的数据报文要发送,这个数据报文要想到达目的地必须径过RTD和RTC,由于先前没有考虑同步问题,RTD和RTC的路由表中没有去往10.1.1.1/24 的路由信息,数据报文到了RTD就会被丢弃。因此,BGP必须与IGP(如RIP、OSPF等)同步。同步是指BGP必须等待直到IGP在其所在自治系统中成功传播该选路信息,才向其它自治系统通告过渡信息。也就是说,当一个路由器从IBGP对等体收到一个目的地的更新信息,在把它通告给其它EBGP对等体之前,要试图验证该目的地通过自治系统内部能否到达(即验证该目的地是否存在于IGP,非BGP路由器是否可传递业务量到该目的地。若IGP认识这个目的地,才接受这样一条路由信息并通告给EBGP对等体,否则将把这个路由当作与IGP不同步,不进行通告。
如胶片所示,RTE 通过IBGP邻居关系获得去往AS100内网络10.1.1.1/24的路由,RTE 不会马上将其添加到自己的路由表中,也不会向RTF通告。RTE看OSPF是否也能获得去往10.1.1.1/24 路由。如果OSPF能就说明IGP 和 BGP
10
DA000011 BGP路由协议 ISSUE1.0
第1章 BGP协议概述
是同步的,RTE 就把该路由添加到路由表中,并通告给RTF。如OSPF没能获得去往10.1.1.1/24 路由,则IGP 和BGP不同步,RTE不会把去往10.1.1.1/24 的路由添加到路由表中,也不会向RTF 通告该路由。解决的方法有很多,最简单的办法是RTB把BGP路由信息引入到OSPF路由表中,再由OSPF 通告到RTE,这样就同步了。但是一般不建议这样做,因为BGP路由表很大,引入到OSPF中来会给系统带来很大负担。其它的解决办法如:可以在RTB上配置一条去往10.1.1.1/24 的静态路由,再把该静态路由引入到OSPF中,这样也可以达到同步。
实际上,同步和不同步是可以配置的。Quidway 系列路由器缺省情况下BGP与IGP是同步的。
虽然同步是可以取消的,但取消同步是有条件的。当AS中所有的BGP 路由器能组成IBGP全闭合网时,可以取消同步,在同步被取消以后,有一个新的问题需要考虑:RTB 去往10.1.1.1/24 的下一跳是s0:1.1.1.1/24 ,RTB在把该路由信息通告给RTE时,保持路由的下一跳不变,因为它们之间是IBGP。这样对于RTE来说,去往10.1.1.1/24 的下一跳是s0:1.1.1.1/24 。 下一跳s0:1.1.1.1/24 是否可达成为关键问题。对于RTE来说,如果下一跳s0:1.1.1.1/24 可达,RTE就接受去往10.1.1.1/24 的路由,如果下一跳s0:1.1.1.1/24 不可达,RTE就不接受去往10.1.1.1/24 的路由。怎样才能让下一跳可达呢?方法同样很多,通常可以通过配置强制改变下一跳来解决问题。因为AS中所有的BGP 路由器是IBGP全闭合连接,路由器在向IBGP邻居通告路由时强制下一跳为自己本身的接口,这样对于IBGP邻居来说,下一跳就是直连网段地址,可达性也就解决了。 胶片中讨论的情况是:建立IBGP邻居关系的两台路由器之间是TCP连接的,在这种情况下,一般不能取消同步,因为在TCP连接的情况下下一跳可达很难满足。
如胶片所示,可以在RTB上配置RTB在向RTE通告路由信息时会强制改变下一跳为它本身接口 2.1.1.2 。对于RTE来说2.1.1.2 是直连的、可达的。当然,也可以通过配置IGP 路由协议 和静态路由来解决下一跳可达的问题。
11
DA000011 BGP路由协议 ISSUE1.0
第1章 BGP协议概述
1.7 如何成为BGP路由
BGP 路由协议是运行在自治系统之间的路由协议,它的主要工作是在自治系统之间传递路由信息,而不是去发现和计算路由信息。发现和计算路由信息的任务由IGP (如:RIP、OSPF)路由协议来完成。BGP 的路由信息需要通过配置命令的方式注入到BGP中。
按照注入的方式可分为三类:纯动态注入、半动态注入、静态注入。 纯动态注入是指:路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去。纯动态注入方式没有对路由信息做任何过滤和选择,它会把路由器获得的所有IGP 路由信息都引入到BGP系统中。从另一角度来说,这样一种路由注入方式配置简单,一次性引入了所有的路由信息。当然,在实际工程中可以根据需要选择。
12
DA000011 BGP路由协议 ISSUE1.0
第1章 BGP协议概述
半动态注入是指:路由器有选择性的将IGP发现的动态路由信息注入到BGP系统中去。它和纯动态注入的区别在于不是将IGP发现的所有路由信息注入到BGP中去。
如胶片所示,路由器B通过OSPF 协议动态地发现去往网络18.0.0.0/8的路由,再通过配置命令静态将其引入到BGP中,我们称这样一种路由注入方式为半动态注入。
13