BGP第二天

一、BGP的宣告问题

若通过BGP协议传递的路由条目与本地通过其他协议学习到的条目完全一致,将出现:
1、 该路由同时作为与其他BGP邻居建立邻居关系时的底层路由,那么这条BGP路由将不优,不能传递也不能加表
2、 该路由不作为建立其他BGP邻居的路由,将在本地不加表,但可以传递,属于优的路由;
例:R2与R3运行了OSPF,之后R2学习到的R3的32位环回主机路由;
再R2与R3建立BGP的邻居关系;之后R3在BGP协议中宣告了32位的环回路由,那么该条目到达R2后,将不优; --BGP的建邻路由与BGP的传递路由相同;
但R2与R3建立邻居关系时,ospf将R3环回以32位传递,但BGP使用24位来传递该环回路由的话,那么等于BGP建邻为32位,bgp传递为24位,不是同一条路由,可以优,可以传递,也可以加表。

注:以上问题在华为设备将出现,但cisco中若bgp传递路由在本地路由表中已经通过其他IGP拥有,将被标记为r-RIB 不装载—本地不加表,但可以传递。

在BGP协议中进行宣告时,是宣告本地路由表中任意路由,不关注这些条目的产生方式;默认将携带这些路由的cost值到BGP的路由条目中去;若本地将本地宣告的BGP路由传递给本地的EBGP邻居,将携带这些cost,便于本地的EBGP邻居所在AS内部设备选路,当然这路由在进入其他AS时不会修改度量;
若本地通过IBGP邻居学习到了BGP路由,优且存在cost值,在本地将这些路由传递给本地的EBGP邻居时,将cost值归0,因为这些度量不是本地产生的;

例:R2与R1为EBGP邻居,那么R2宣告本地通过OSPF协议学习到的路由4.4.4.4/32度量为2,那么这条路由在进入BGP表时携带度量值2,传递给R1,R1在路由表中显示该度量,同时传递给R1内部AS时度量不变;
该拓扑中R2与R4为IBGP邻居,这条BGP路由也会被R2传递给R4,但R4 再将该路由传递给R4的EBGP邻居关系R5时,将度量归0; 若R4也宣告4.4.4.4/32这条路由,那么传递给R5时将携带R4到达该网段的cost值,因为只有本地最优路由可以传递,本地宣告优于其他邻居传递过来的BGP路由。

总结:存在EBGP邻居关系(连接其他的AS)的所有BGP设备均建议宣告内部AS的路由。

二、重发布:
BGP协议宣告的路由,基本是本地通过IGP学习到的本as路由;数量较大,若逐条宣告,配置量很大,但可控性强; 也可以在同时运行BGP和igp的设备,将IGP协议重发布到BGP协议中,来实现批量的路由宣告效果;
宣告相当于逐条的重发布,重发布相当于批量的宣告;两者产生的路由条目,起源属性不同,其他属性默认完全一致;

总结:存在EBGP邻居关系(连接其他的AS)的所有BGP设备均建议重发布IGP到BGP。

三、 自动汇总 默认cisco和华为设备均关闭了自动汇总

自动汇总对于BGP正常通过network宣告产生的路由没有影响;
仅针对从IGP重发布到BGP的路由条目产生影响;— 路由条目以主类长度发送,不携带cost值;
[r1]bgp 1
[r1-bgp]summary automatic 开启自动汇总,建议维持默认关闭状态

四、手工汇总—聚合

  1. 利用了BGP的宣告的特点,本地路由表中任意路由,不关注来源均可以宣告在BGP中;不用逐一宣告明细路由,先本地手工静态一条指向汇总网段的空接口防环路由,然后再将其宣告到BGP协议中来;从IGP表中宣告到BGP协议中的条目,仅携带目标网络号和度量值;

聚合的缺点是将多个网络号合成一个,导致访问整个聚合网段时,仅存在唯一的路径;
若在多路径建邻的前提下,将无法精确的选路;故在大型的多链路的网络中为了更好控制选路,必然在传递聚合条目的同时,再在最佳路径处传递部分的明细路由;

若需要在传递聚合条目的同时,传递部分明细路由,只需要在宣告的空接口路由后,逐一宣告需要的明细路由即可;
以上做法的缺点是不能携带原有明细路由的cost值,因为宣告的是本地路由表中人为添加那条静态空接口路由;

2)标准的BGP路由聚合—先逐一手工宣告明细,或批量重发布路由;
再进行聚合配置;默认在本地生成空接口防环路由;

[r2-bgp]aggregate 3.3.0.0 21 聚合和所有明细路由均发送
[r2-bgp]aggregate 3.3.0.0 21 detail-suppressed 抑制所有的明细路由,仅发送聚合条目;

以上操作方法:若需要在发送聚合条目的同时携带部分的明细路由,需要使用策略1、 抑制列表
[r2]ip ip-prefix ss permit 3.3.4.1 32
[r2]route-policy ss permit node 10
[r2-route-policy]if-match ip-prefix ss
[r2]bgp 2
[r2-bgp]aggregate 3.3.0.0 21 suppress-policy ss 在传递聚合条目的同时,在抑制3.3.4.1/32这一条明细,其他明细正常转发;

2、 使用路由策略在邻居间直接进行收发路由的管理
[r2]ip ip-prefix qq permit 3.3.3.3 32
[r2]route-policy qq deny node 10
[r2-route-policy]if-match ip-prefix qq
[r2-route-policy]q
[r2]route-policy qq permit node 20
[r2]bgp 2
[r2-bgp]aggregate 3.3.0.0 21
[r2-bgp]peer 12.1.1.1 route-policy qq export

3、 直接使用前缀列表来实现方法的功能
[r2]ip ip-prefix ww deny 3.3.3.3 32
[r2]ip ip-prefix ww permit 0.0.0.0 0 le 32
[r2]bgp 2
[r2-bgp]pe 12.1.1.1 ip-prefix ww export

五、有条件的打破IBGP水平分割
IBGP水平分割,用于避免在一个AS内部由IBGP邻居间产生的环路;
规则:从一个iBGP邻居处学习到的BGP路由不能传递给下一个IBGP邻居;因为BGP的非直连建邻能力,因此可以在一个AS内部建立多个邻居来实现连接关系备份的作用;故正常一台设备只要运行bgp,那么应该处于AS的边界,存在ebgp邻居;

所有运行bgp协议的设备正常都会从其他AS学习到路由条目,然后共享到本地所在的AS,由于IBGP水平分割,导致本地需要和所有本AS内部的BGP设备建立IBGP邻居关系;IBGP邻居关系的数量成指数上升;

所谓有条件的打破是指在打破IBGP水平分割的时候,不能产生环路;–AS-BY-AS

1、 路由反射器 – RR(反射器)、客户端、非客户端;
客户端、非客户端必须分别为RR的IBGP邻居关系;三种角色构建为一个簇(组);
一个簇内可以存在多台设备,但至少一个簇内存在一个RR和一个客户端;
规则:
1)RR从一台EBGP邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
2)RR从一台客户端邻居处学习到的路由可以共享给本地的其他客户端、非客户端、EBGP邻居;
3)RR从一台非客户端邻居处学习到的路由可以共享给本地的其他客户端、EBGP;不能共享给其他的非客户端;

  注:被反射路由,在反射过程中,其属性不发生任何变化;若RR接收的条目在本地不优,不具备传递性,将不被反射; 
  [r3-bgp]peer 2.2.2.2 reflect-client    ibgp邻居2.2.2.2成为本地的客户端,同时本地成为RR;

2、 联邦,将一个大as逻辑为多个小as;小AS使用私有AS号,小AS间为联邦内的bepg邻居关系,可以像EBGP一样传递路由,但不能修改属性; 对于联邦外的AS,只能看到大AS号;
1) 所有的启动,建邻、管理均基于小AS号进
2) 联邦内所有设备需要声明自己所在的大AS号
3) 小AS间的ebgp邻居需要互指对端的小as号

[r3]bgp 64512
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation id 2 声明本地的大AS号
[r3-bgp]confederation peer-as 64513 对端小AS号 //必须首先声明否则会报错
[r3-bgp]pe 2.2.2.2 as-number 64512
[r3-bgp]pe 2.2.2.2 connect-interface LoopBack 0
[r3-bgp]pe 4.4.4.4 as-number 64513
[r3-bgp]pe 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]pe 4.4.4.4 ebgp-max-hop 2

发布了18 篇原创文章 · 获赞 7 · 访问量 547

猜你喜欢

转载自blog.csdn.net/weixin_44029504/article/details/102706572