BGP中的环路分析与规避措施


一、BGP路由协议

BGPBorder Gateway Protocol,边界网关协议)是一种既可以用于不同ASAutonomous System,自治系统)之间,又可以用于同一AS内部的动态路由协议。当BGP运行于同一AS内部时,被称为IBGPInternal BGP);当BGP运行于不同AS之间时,称为EBGPExternal BGP)。AS是拥有同一选路策略,属于同一技术管理部门的一组路由器的集合。

当前使用的BGP版本是BGP-V4BGP-V4作为Internet外部路由协议标准,被ISPInternet Service Provider,互联网服务提供商)广泛应用。

本案例设计出一个存在环路的BGP场景,对BGP的相关属性和防环错施进行分析,从而加深对BGP属性的理解。

 

二、拓扑描述

1、拓扑详图

 

2、组网说明

    每台路由器的router id loopback0接口的IP地址,即路由器编号,如R1router id 1.1.1.1,并发布在OSPF中。路由器间的互联地址为两台路由器的编号,如R2R3间的地址为23.1.1.X/24X为接口所在路由器编号。R5直连了一个网段100.1.1.0/24,并发布到BGP中。

    R1R2R3R4四台路由器运行OSPF协议,R1R4间的链路发布在区域2R3R4间的链路发布在骨干区域,R2R3间的链路发布在区域1

    R1R2AS 1R3R4AS 2R5AS5AS间使用物理链路建立EBGP邻居,AS内使用loopback0建立IBGP邻居。

 

三、环路分析

 

1、路由发布分析

    R5有一条BGP 100.1.1.0/24的路由发布进BGP AS3中,R1R5EBGP邻居,所以R1会收到这条EBGP100.1.1.0/24路由,R1有一个IBGP邻居,并配置向R2传递路由时将下一跳变为自己的接口,所以R2有访问100.1.1.1/24的路由。

    同理R1R2都会将自己学到的BGP路由传递给自己的EBGP邻居R4R3,这样全网都学到了100.1.1.0/24的路由。

 

2、环路的产生

假设R2上某个网段想访问100.1.1.1/24,那我们来分析R2R2R1学到的IBGP路由,其访问100.1.1.1/24的下一跳是1.1.1.1,所以查IGP路由,发现R2 访问R1Loopback0 1.1.1.1 下一跳指向R3,所以将数据包给了R3

对于R3,会同时从R2R4学到100.1.1.1/24的路由,那么R3会优选哪条路由呢?根据选路规则,在不改变相关属性默认值的情况下,会优选从EBGP邻居过来的路由,所以R3会优选从R2学到的路由,即R3将从R2收到的数据包回送给R2,环路产生。

 

四、解决方法

在解决此环路之前,我们先分析BGP的选路规则,再从相关属性作为突破口,来解决此问题。

1BGP选路规则

⑴优选协议首选值(PrefVal)最高的路由。

⑵优选本地优先级(Local_Pref)最高的路由。

⑶优选本地生成的路由(依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由)。

⑷优选AS路径(AS_Path)最短的路由。

⑸比较Origin属性,依次优选Origin类型为IGPEGPIncomplete的路由。

⑹优选MED值最低的路由。

⑺优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)。

⑻优选到BGP下一跳IGP Metric较小的路由。

⑼优选Cluster_List最短的路由。

⑽优选Router ID最小的路由器发布的路由。

⑾比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由。

2、相关解决方法

① 调整prefval

Prefval值是本路由器有效,所以在R3设置从邻居学过来的prefval值,此值默认是0,值越大越优先,现用命令将从R4过来路由的prefval值改成1,而R2学过来的路由默认是0,则R3在选路时会选择下一跳为R4

命令如下:

bgp 2

  peer 4.4.4.4 route-policy abc import

 

route-policy abc permit node 10

 apply preferred-value 1

 

② 调整本地优先级

分析:local-pre值默认是100,在整个AS内有效。可以影响出AS的流量。

方法一:在R3的入方向,从R4过来的 LP改成200

bgp 2

route-policy abc permit node 10

#

route-policy abc permit node 10

 apply local-preference 200

#

 

③ 调整AS-PATH

    AS-PATH值越短越优先。从R2发过来的路由加上AS-PATH 号,不建议在R4上面overwrite 或减少其AS号,这样造成路由条目所经过的AS号丢失,AS-PATH的作用是在AS间防环路的作用,其丢失,则会存在环路的风险。如下操作,将从R2学到的路由加上AS100,这样R2就优选从R4学过来的路由。

bgp 2

  peer 23.1.1.2 route-policy abc2 import

#

route-policy abc2 permit node 10

 apply as-path 100 additive

 

 

④ 调整origin属性值

    由于100.1.1.0/24是在R5上面network进来的路由,所以在所有路由器上看到其origin属性值为i,根据选路规则第5条,只需要将R2过来的改成incomplete即可影响R2的选路。如下配置:

bgp 2

  peer 23.1.1.2 route-policy abc2 import

#

 

route-policy abc2 permit node 10

 apply origin incomplete

 

⑤ 调整MED

MED值默认是0,其值越小越优先。在此将从R2学到的路由的MED值改大即可影响R2的选路。

bgp 2

  peer 23.1.1.2 route-policy abc2 import

route-policy abc2 permit node 10

 apply cost 1

#

 

⑥ 还有其他方法改变其下一跳,如策略路由,但是未用BGP的属性,这里不再阐述。

 

五、总结

    此案例非实际的工程案例,只是让我们从这个实验中去理解如何用BGP的属性去影响路由器的选路,同时也加深对BGP选路规则的理解。

 

 


2016年06月