BGP 知识点总结

Posted 小茗,你好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BGP 知识点总结相关的知识,希望对你有一定的参考价值。

目录

一、BGP的宣告问题:

二、重发布   

三、自动汇总  

四、手工汇总—聚合

五、路由控制

六、有条件的打破IBGP水平分割


一、BGP的宣告问题:

1、若通过BGP协议传递的路由条目与本地通过其他协议学习到的条目目标一致,将出现:

(1)该路由同时作为与其他BGP邻居建立邻居关系时的底层路由,那么这条BGP路由将不优,不能传递也不能加表

(2)该路由不作为建立其他BGP邻居的路由,将在本地不加表,但可以传递,属于优的路由;

例:(1)R2与R3运行了OSPF,之后R2学习到的R3的32位环回主机路由,再将R2与R3建立BGP的邻居关系;

(2)之后R3在BGP协议中宣告了32位的环回路由,那么该条目到达R2后,将不优; --BGP的建邻路由与BGP的传递路由相同;

(3)在R2与R3建立邻居关系时,ospf将R3环回以32位传递,但BGP使用24位来传递该环回路由的话,那么等于BGP建邻为32位,bgp传递为24位,不是同一条路由,可以优,可以传递,也可以加表。

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

2、在BGP协议中进行宣告时,是宣告本地路由表中任意路由,不关注这些条目的产生方式;

默认将携带这些路由的cost值到BGP的路由条目中去;若本地将本地宣告的BGP路由传递给本地的EBGP邻居,将携带这些cost,便于本地的EBGP邻居所在AS内部设备选路,当然该路由在进入其他AS时不会修改度量;

若本地通过IBGP邻居学习到了BGP路由,优且存在cost值,在本地将这些路由传递给本地的EBGP邻居时,将cost值归0,因为这些度量不是本地产生的。

例:(1)R2与R1为EBGP邻居,那么R2宣告本地通过OSPF协议学习到的路由4.4.4.4/32度量为2,那么这条路由在进入BGP表时携带度量值2,传递给R1,R1在路由表中显示该度量,同时传递给R1内部AS时度量不变; 

(2)该拓扑中R2与R4为IBGP邻居,这条BGP路由也会被R2传递给R4,但R4 再将该路由传递给R4的EBGP邻居关系R5时,将度量归0;

(3)若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协议中的条目,仅携带目标网络号和度量值;

例:先在R1上手写两条环回路由分别为 99.1.1.1/24 和 99.1.2.1/24,再将两条路由汇总网段指向空接口,然后将网段宣告到BGP协议中。

在R2上查看:

聚合的缺点是将多个网络号合成一个,导致访问整个聚合网段时,仅存在唯一的路径;

若在多路径建邻的前提下,将无法精确的选路;故在大型的多链路的网络中为了更好控制选路,必然在传递聚合条目的同时,再在最佳路径处传递部分的明细路由。

若需要在传递聚合条目的同时,传递部分明细路由,只需要在宣告的空接口路由后,逐一宣告需要的明细路由即可。

以上做法的缺点是:不能携带原有明细路由的cost值,因为宣告的是本地路由表中人为添加那条静态空接口路由。

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

[r1-bgp]aggregate 99.1.0.0 22     聚合和所有明细路由均发送

[r1-bgp]aggregate 99.1.0.0 22 detail-suppressed  抑制所有的明细路由,仅发送聚合条目

如果直接配置聚合和所有明细路由,在R2上查看:

 会发现聚合和所有明细路由均会被传递,也意味着所有明细路由会被加表

如果在聚合路由后边加上抑制明细:

然后查看R1的BGP表,发现所有明细均被抑制

查看R2的BGP表:往下只发送聚合路由

使用该方法配置聚合会在该路由器R1上自动生成一条汇总网段指向空接口的放环路由

以上操作方法:若需要在发送聚合条目的同时携带部分的明细路由,需要使用策略

五、路由控制

1、抑制列表

抑制列表——默认传递所有明细和聚合条目,通过抑制列表,限制不需要传递的明细路由。

如果只抑制 99.1.2.1/24 这条路由,首先抓取路由

[r1]ip ip-prefix a permit 99.1.2.1 24

[r1]route-policy aa permit node 10

[r1-route-policy]if-match ip-prefix a

进入BGP协议并做策略抑制该路由

[r1]bgp 1

[r1-bgp]aggregate 99.1.0.0 22 suppress-policy aa      在传递聚合条目的同时,抑制99.1.2.1/24这一条明细,其他明细正常转发

在BGP协议中进行匹配抑制目标路由

查看R1的BGP表:只有目标路由被抑制

查看 R2的BGP表:被抑制的路由并没有往下传递

2、使用路由策略在邻居间直接进行收发路由的管理

[r1]ip ip-prefix w permit 99.1.2.1 24

[r1]route-policy ww deny  node 10

[r1-route-policy]if-match ip-prefix w

[r1-route-policy]q

[r1]route-policy ww permit  node 20



[r1]bgp 1

[r1-bgp]aggregate 99.1.0.0 22

[r1-bgp]peer 12.1.1.2 route-policy qq export

抓取目标路由并在路由策略中进行抑制

然后做一个空表放过所有:

进入BGP中宣告聚合条目并在邻居出口的方向执行该路由策略:

R2上查看BGP表:目标路由被抑制

3、直接使用前缀列表来实现方法的功能

[r1]ip ip-prefix e deny 99.1.2.1 24

[r1]ip ip-prefix e permit 0.0.0.0 0 le 32

[r1]bgp 1

[r1-bgp]peer 12.1.1.2 ip-prefix e export

使用前缀列表拒绝目标路由并允许所有路由:

在BGP协议中的邻居出口的方向执行该前缀列表策略

在R2上查看BGP表

  

六、有条件的打破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作为反射器,R2作为它的客户,再R3上配置下边一条命令即可

[r3-bgp]peer 2.2.2.2 reflect-client    ibgp邻居2.2.2.2成为本地的客户端,同时本地成为RR

然后将R1环回路由宣告,查看路由的传递:

 可以看到R3作为RR可以将IBGP学到的路由传给R4和R5

在拓扑图中,R4和R5均为非客户,如果将R4环回宣告看一下效果:

 可以看到只有R5不能学到R4宣告的路由,因为非客户之间是不能传递路由的

2. 联邦---将一个大as逻辑分为多个小as;小AS使用私有AS号,小AS间为联邦内的ebpg邻居关系,可以像EBGP一样传递路由,但不能修改属性; 对于联邦外的AS,只能看到大AS号;

所有的启动,建邻、管理均基于小AS号进行

  1. 联邦内所有设备需要声明自己所在的大AS号
  2. 小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

查看配置(R2-R5):

R2:

 R3:

R4:

R5:

 

注:在实际工程中,路由器反射器与联邦技术是结合在一个拓扑中共同使用的

以上是关于BGP 知识点总结的主要内容,如果未能解决你的问题,请参考以下文章

BGP 知识点总结

BGP基础知识

线程学习知识点总结

BGP学习总结

BGP 所有的知识点全在这

学习总结---BGP协议