《路由交换技术及应用(第3版)》HCNP拓展教学资料-教案(5)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《路由交换技术及应用(第3版)》HCNP拓展教学资料-教案(5)
一、课前回顾
1、BGP的概念
4.3 BGP工作原理
BGP是主要工作在AS与AS间的动态路由协议,为AS间提供无环路的路由信息交互,下面介绍一下BGP到底如何提供AS间无环的路由信息交换。
4.3.1 BGP邻居关系
同OSPF、ISIS一样,在BGP中,路由学习的依然要首先建立邻居关系。所不同的是,OSPF、ISIS的邻居关系是自动建立的,而BGP邻居的建立必须手动完成,从邻居的建立开始就体现出了BGP是基于策略进行路由的(物理上直接相连未必是邻居,反过来物理上没有直接相连可以建立邻居关系)。
BGP邻居关系是建立在TCP会话的基础之上的,而两个运行BGP的路由器要建立TCP的会话就必须要具备IP连通性。IP连通性必须通过BGP之外的协议实现,具体来讲就是IP 连通性通过内部网关协议(IGP)或者静态路由来实现,为方便起见,我们把通过内部网关协议或者静态路由实现的IP连通性统称为IGP 连通性或者IGP可达性(IGP Reachability)。
如果两个交换BGP报文的对等体属于同一个自治系统,那么这两个对等体就是IBGP对等体(Internal BGP)。如果两个交换BGP报文的对等体属于不同的自治系统,那么这两个对等体就是EBGP对等体(External BGP)。
4.3.2 BGP路由通告原则
BGP路由通告原则1:连接一建立,BGP Speaker将把自己所有BGP路由通告给新对等体,多条路径时,BGP Speaker只选最优的给自己使用,BGP Speaker只把自己使用的最优路由通告给对等体。
一般情况下,如果BGP Speaker学到去往同一网段的路由多于一条时,只会选择一条最优的路由给自己使用,即用来发布给邻居,同时上送给IP路由表。但是,由于路由器也会选择最优的路由给自己使用,所以BGP Speaker本身选择的最优的路由也不一定被路由器使用。例如,一条去往相同网段的BGP优选路由与一条静态路由,这时,由于BGP路由优先级要低,所以路由器会把这条静态路由加到路由表中去,而不会选择BGP优选的路由。
如图4-12所示,当前RTA上存在两条去往192.168.3.0的路由,下一跳分别为10.1.1.2
和10.2.2.2,BGP会根据选路原则选出最优路由(被打上“>”标记的路由),用来发布给邻居。同时加入IP路由表,在IP路由表中会检查是否存在一条比BGP最佳路由更好的路由条目,比如有一条到达192.168.3.0的静态路由(静态路由的优先级为60,而BGP的优先级为255,数值越低越好),则使用更优的路由条目,反之则把BGP最佳路由作为IP路由表的优选路由。
BGP路由通告原则2:BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)。
BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)。
对于IGP,工作原理是路由器之间交换路由信息,所以任何一个路由的下一跳是宣告此路由的路由器连接接口的IP地址,这是很容易理解的。而对于BGP,则主要是用于AS之间传递无环路的路由信息,BGP就是把AS抽象或者浓缩成一个路由器看待,所以RTB不会修改任何路由更新里的信息就更新给的RTA,即RTA要到达网络192.168.1.0/24,下一跳为20.0.0.2。这里又引入一个问题,对于RTA来说,很有可能不知道20.0.0.2的路由,这样就会导致路由不可达。
BGP提供了命令,让某些组网环境中,为保证IBGP邻居能够找到正确的下一跳,可以配置在向IBGP对等体发布路由时,改变下一跳地址为自身地址。
缺省情况下,BGP在向EBGP对等体通告路由时,将下一跳属性设为自身的IP地址。BGP 在向IBGP对等体通告路由时,不改变下一跳属性。
BGP路由通告原则3:BGP Speaker 从IBGP获得的路由不会通告给它的IBGP邻居。
如果没有这条路由通告规则,RTC从IBGP对等体RTA学到的路由就会通告给RTD,RTD 继而会通告给RTB,RTB再把这条路由通告回RTA。这样就在AS内形成了路由环路。
所以,此原则是在AS内避免路由环路的重要手段。但是,这条原则的引入,带来了新的问题:RTD无法收到来自AS 12的BGP路由。一般我们采用IBGP的逻辑全连接来解决这个问题,即在RTA-RTD、RTB-RTC之间再建立两条IBGP连接。
IBGP全互连(FULL-MESH)关系是解决由于IBGP水平分割带来的路由传递的问题的方法之一。这种方法的缺陷是路由器要付出更多的开销去维护网络里的IBGP会话。
除此以外,BGP还提供了如下两种解决IBGP水平分割的方案:
路由反射器(Route-Reflector)-- RFC 2796
联盟(Confederation)-- RFC 3065
BGP路由通告原则4:BGP Speaker 从IBGP获得的路由是否通告给它的EBGP对等体要
依IGP和BGP同步的情况来决定。
BGP与IGP同步的概念:BGP Speaker不将从IBGP对等体获得的路由信息通告给它的EBGP对等体,除非该路由信息也能通过IGP获得。
BGP的主要任务之一就是向其它自治系统发布该自治系统的网络可达信息。如图4-17所示,RTB会把去往10.1.1.0/24 的路由信息封装在BGP报文中,通过由RTB、RTE建立的TCP连接通告给RTE,如果RTE不考虑同步问题,直接接受了这条路由信息并通告给RTF。那么,如果RTF或RTE有去往10.1.1.0/24 的数据报文要发送,这个数据报文要想到达目的地必须经过RTD和RTC。但是,由于先前没有考虑同步问题,RTD和RTC的路由表中没有去往10.1.1.0/24的路由信息,数据报文到了RTD就会被丢弃。因此,BGP必须与IGP(如RIP、OSPF等)同步。也就是说,当一个路由器从IBGP对等体收到一条路由更新信息,在把它通告给它的EBGP对等体之前,要试图验证该目的地能否通过自治系统内部到达(即验证该目的地是否存在于IGP发现的路由表内,非BGP路由器是否可以传递报文到该目的地)。若能通过IGP知道这个目的地,才会把这样一条路由信息通告给EBGP对等体,否则认为BGP 与IGP不同步,不进行通告。
解决同步问题的方法有很多,最简单的办法是RTB把BGP路由信息引入到IGP中,这样就同步了。但是一般不建议这样做,因为BGP路由表很大,引入到IGP中来会给系统带来很大负担,甚至导致中低端路由设备的瘫痪。其它的解决办法如:可以在RTB上配置一条去往10.1.1.0/24的静态路由,再把该静态路由引入到IGP中,这样也可以达到同步。但不论何种方法,都不适用于大规模网络。
实际上,VRP平台缺省情况下BGP与IGP是非同步的,并不可改变。
但取消同步是有条件的。当AS中所有的BGP路由器能组成IBGP全闭合网时,才可以取消同步,即RTB-RTC、RTB-RTD、RTB-RTE、RTC-RTD、RTC-RTE、RTD-RTE都通过TCP连接建立IBGP邻居关系。这时,我们来看,数据到RTD后,由于RTB-RTD建立了IBGP邻居,所以RTD上有去往10.1.1.0/24的从RTB学来的BGP路由,这时,通过路由迭代,RTD将数据发给RTC;同理,RTC也会把数据发给RTB。这样,数据就不会在途中丢失了。