一、BGP最优路由
只将BGP的最优路由发布给对等体 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布 给对等体。当一条路由的前缀标示“>”,表示最优路由。
问题1:成为最优路由条件是什么?
1、成为有效路由 (路由的前缀标示 *),也就是要先满足以下条件:
a)下一跳地址可达
b)如果开启同步,必须满足同步条件
c)路由的前缀和路由的下一跳地址不能一致
2、成为有效路由之后,根据选路规则选出的最优路由
二、从EBGP对等体收到的最优路由,发布给所有EBGP和IBGP对等体
1、向EBGP对等体发送路由信息时,会改变BGP路由的下一跳地址,下一跳地 址为发送路由器的更新源地址;
2、向IBGP对等体发送路由信息时,不会改变BGP路由的下一跳地址,可能会导致IBGP邻居收到此跳路由时下一跳地址不可达,无法使用该路由;
解决:
1、针对IBGP邻居使用next-hop-local命令,使收到的EBGP路由传 递指定IBGP邻居时将下一跳地址改变为本路由器更新源地址。
2、将下一跳地址宣告进IGP,使下一跳地址IGP可达。
问题2:为什么向IBGP对等体发送路由时,不会改变BGP路由的下一跳地址?
1、BGP协议的特点,它认为一个AS是一个整体,类似一台路由器,只有将BGP路由从AS传出的时候,才会改变下一跳;
2、下一跳不改变,可以引导AS内的路由器访问目的网络时有统一的出口,方便做流量控制;
3、因为在一个AS内,下一跳不修改的话,本AS内的路由器可以根据这个下一跳地 址找到离开本AS的一条最优的路径。(场景:MA网络中)
三、IBGP水平分割原则
从IBGP对等体获得的路由,只发布给EBGP对等体,不发送给IBGP邻居。称为IBGP水平分割原则,主要用于AS内环路防止。IBGP水平分割会导致路由 传递问题,会使AS内的IBGP无法学习到路由;
解决:
1、全互联,让AS内使用BGP路由器都建立IBGP的邻居关系(会导致AS内BGP 的会话数过多,N(N-1)/2)
2、反射器(RR),能打破水平分割的原则进行路由传递
3、联盟
问题3:IBGP和EBGP路由器之间是如何传递路由的?会出现什么问题?有RR 的情况呢?
从EBGP对等体收到的最优路由,发布给所有EBGP和IBGP对等体,传给IBGP邻居 可能会出现不可达的问题;从IBGP对等体获得的路由,只发布给EBGP对等体,不发送给IBGP邻居,带来路由传递的问题,可以使用RR解决。
问题4:反射器(RR)和联盟的区别?
反射器(RR)是打破水平分割的原则进行路由传递,配置简单;联盟是将原有的AS划分为多个子AS,是原本的IBGP邻居关系变为EBGP邻居关 系,这样就可以实现路由的传递,配置复杂。
参考因素 | 比较 |
---|---|
多层次 | 两种方法都支持多层次来进一步增强扩展性。路由反射器支持多级路由反射结构。联盟允许在成员AS内使用路由反射。 |
策略控制 | 两者都提供路由选择策略控制,不过联盟可以提供更大的灵活性。 |
常规IBGP迁移的复杂性 | 路由反射的迁移复杂性非常低,因为总体网络配置几乎很少发生改变。然而,从IBGP到联盟的迁移需要对配置和网络架构做很大的改变。 |
能力支持 | 联盟内的所有路由器必须支持联盟配置能力,因为所有路由器需要理解联盟AS-PATH属性。在路由反射的架构中,只需要反射器支持路由反射能力。然而,在新的分簇设计中,客户也必须理解反射器属性。 |
IGP扩展 | 路由反射在AS内需要单一的IGP,而联盟支持单一的或分开的IGP。这可能是联盟比路由反射所具有的最明显的优势。如果你的IGP达到了它的扩展性限制,或者是因为它太大而难于处理管理任务,那么可以使用联盟来减小IGP路由选择表的大小。 |
部署经验 | 因为更多的服务提供商已经部署了路由反射而非联盟,因此从路由反射中已经获得了更多的经验。 |
AS合并 | 实际上AS合并与IBGP扩展性是无关的,但在这里讨论它是因为它是联盟的优势之一。一个AS可以和一个已存的联盟合并,这是通过把新的AS作为联盟的一个子AS对待来完成的。 |
四、BGP和IGP同步。
从IBGP学习到的BGP路由,必须也从IGP也学习到此路由,否则此路由为无效路由,不会传递给BGP邻居,目的是为了避免路由黑洞的问题;
说明:BGP同步虽然可以避免路由黑洞问题,但是会带来路由信息传递的问题。
不建议开启BGP同步功能,因为BGP主要功能之一为传递路由信息,出现路由黑 洞问题采用其他方式解决。
现在VRP平台无法开启同步机制,采用其他机制解决路由黑洞问题:
1、 在数据转发所需经过的路径上也运行BGP
2、将所需的BGP路由引入到IGP中
3、 MPLS(R1和R3上使用命令:route recursive-lookup tunnel) 场景:
问题5:如何使用MPLS解决BGP路由黑洞的问题?
1、在一个AS内,为IBGP邻居的更新源地址事先通过MPLS LDP或者静态手工隧 道建立起LSP隧道;
2、配置命令使去往目的网段时,发送给的下一跳迭代进隧道中;
问题6:成为BGP路由的方式?
1、network:将路由表中存在的路由通过network的方式成为BGP路由;注意:network的路由前缀和掩码要与路由表中一致
2、import:将特定协议的路由通过import的方式成为BGP路由
3、路由聚合:通过手工汇总或者自动汇总产生BGP路由
问题7:将BGP路由引入到IGP中需要注意哪些问题?
1、利用策略控制路由,避免将大量BGP路由引入到IGP中导致性能较差的设备工 作不正常,无法承载。
2、默认情况下,只会将EBGP邻居学习到的路由引入到IGP中,IBGP路由引入到 IGP中需要额外配置命令激活。
问题8:为什么默认不会将IBGP邻居的路由引入到IGP中?
将IBGP邻居的路由引入到IGP中时,如果引入不当会出现环路,场景:
如上图,环路会在R2和R3之间发生,R2发往R3的路由。
问题9:bgp协议中同步的作用是什么?为什么要使用同步?举例说明如何使用同步技术?
1、BGP同步的概念 在IBGP路由加入路由表并发布给EBGP邻居之前,会检查IGP路由表,只有在IGP 也知道这条IBGP路由时,它才会被加入到路由表,并发布给BGP邻居
2、同步的作用(防止路由黑洞出现) 避免出现误导外部AS路由器的现象发生,防止一个AS(不是所有的路由器都运 行BGP)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由
案例分析:
在上图中,RTD没有运行BGP,RTC关闭了同步功能。从RTA始发路由 1.1.1.1/32,向RTE传递。RTB和RTC收到该路由后将其置为有效, RTC 把该路由向RTE进行传递,在RTE上该路由为生效路由。但是在RTC上并未检查该路由在IGP中是否存在。
如有在RTE上存在到1.1.1.1的流量,RTE把该流量转发给RTC,RTC把该流量转发给RTD,但是RTD上不存在 1.1.1.1/32的IGP路由,故流量丢失。
如RTC开启BGP同步功能,当RTC检 测不到1.1.1.1/32的IGP路由时,RTC便不会把该路由传递给RTE,这时, RTE可能会把该流量转给给其他流量,也避免流量丢失的情况。
需要在RTB上把1.1.1.1/32路由引入到IGP中,并在IGP中进行传递,这样并开启同步功能,就不会出现AS内路由黑洞的问题 同步带来的问题:如果将BGP路由发布到IGP中,由于BGP路由数量一般较大,会导致IGP路由器要维护大量的外部路由,对路由器的CPU和内存以及AS内部的链 路带宽的占用将带来巨大的开销;同时会带来收敛延时增加。BGP默认关闭同步