Cisco(37)——BGP的十三条选路原则演示

思科网络实验(34)——BGP的十三条选路原则

实验拓扑:

Cisco(37)——BGP的十三条选路原则演示_第1张图片

实验说明:

1.拓扑中含有三个AS,只有在AS10内存在三台路由器,在AS10内部运行EIGRP传路由,剩余的AS内部只有一台路由器。

2.R2和R1、R4通过直连接口建立EBGP对等体,R3和R1、R4建立IBGP对等体,和R5通过直连接口建立EBGP的对等体。

实验需求:

通过修改BGP路由的属性值,达到选路的效果。

实验步骤:

实验前的预配置请看:思科网络实验(36)——BGP(自动汇总+手工汇总+重分发)这节课。

问题1:现在在R2上通告2.2.2.2/24和8.8.8.8/24的路由,当R3收到这两条路由时,他会优选R1做下一跳还是优选R4做下一跳?

解:R3会优选R1做下一跳。比权重都一样,都是0;比Local-preference都是100;都不是R3始发的;AS-Path都包含一个AS2;起源属性都是IGP;MED默认都是0;都是IGP路由,运行EIGRP链路带宽一致,去往环回口的度量值也是相同的;没有启用负载均衡;建邻居的时间也差不多;比较Router-ID,R1的ID比R4小,所以R3会优选R1做下一跳。

验证:

Cisco(37)——BGP的十三条选路原则演示_第2张图片

去往2.2.2.0/24的路由走R1,去往8.8.8.0/24的路由也走R1。

一:

通过权重(weight)的修改实现R3去往2.2.2.0/24走R1,去往8.8.8.0/24走R4。

权重只有本地意义,只能在本地上修改,针对R4传过来的8.8.8.0/24的路由,把权重改大一点(默认0)。

R3(config)#access-list 8 permit 8.8.8.0 0.0.0.0   

R3(config)#route-map w permit 10
R3(config-route-map)#match ip address 8
R3(config-route-map)#set weight 1
R3(config-route-map)#exit 

R3(config)#route-map w permit 20
R3(config-route-map)#exit 

R3(config)#router bgp 10
R3(config-router)#neighbor 4.4.4.4 route-map w in

R3(config-router)#end

R3#clear ip bgp * soft

命令解释:

使用标准ACL抓路由,起名为8,标椎的ACL只能跟原地址和源反码,用匹配原地址的部分抓路由的前缀,用匹配反码的部分匹配前缀的范围(要抓的路由只有这么一条,所以反码写全零就好了)。

标准ACL再抓取路由的时候,只能匹配路由的前缀!!不能匹配路由的掩码!!

写一个名为w的route-map,序列号为10,匹配ACL8,针对ACL8设置weight为1;

route-map和ACL一样,默认有一个隐藏的语句,他会把所有的其他的东西都给deny掉。

所以后面必须在写一条序列号为20的route-map,允许其他所有的通过。

查看效果:

Cisco(37)——BGP的十三条选路原则演示_第3张图片

通过上图可以发现:去往2.2.2.0/24的路由走R1,去往8.8.8.0/24的路由走R4了。R4给给我通告的8.8.8.0/24的路由的权重变为1了。

删除配置:

R3(config)#router bgp 10
R3(config-router)#no neighbor 4.4.4.4 route-map w in 
R3(config-router)#end

R3#clear ip bgp * soft

Cisco(37)——BGP的十三条选路原则演示_第4张图片

二:

通过Local-Preference的修改实现R3去往2.2.2.0/24走R1,去往8.8.8.0/24走R4。

①:在R1上抓取8.8.8.0/24的路由,把Local-Preference改小一些;

②:在R4上抓取8.8.8.0/24的路由,把Local-Preference改大一些;可以针对EBGP邻居,再接收路由的时候做一个入向修改,也可以针对IBGP邻居,在发送方向做一个出向修改。

在发送路由的时候,默认不会携带Local-Preference!!如下图,Local-Preference为空,R4也一样。

Cisco(37)——BGP的十三条选路原则演示_第5张图片

R4(config)#access-list 108 permit ip host 8.8.8.0 host 255.255.255.0

R4(config)#route-map local permit 10
R4(config-route-map)#match ip address 108
R4(config-route-map)#set local-preference 101
R4(config-route-map)#exit 

R4(config)#route-map local permit 20
R4(config-route-map)#exit 

R4(config)#router bgp 10
R4(config-router)#neighbor 24.1.1.2 route-map local in
R4(config-router)#end

R4#clear ip bgp * soft

命令解释:

通过一个扩展ACL抓取路由,前面匹配源地址的部分抓路由的前缀,后面匹配目的地址的部分抓路由的掩码。

查看效果:

Cisco(37)——BGP的十三条选路原则演示_第6张图片

Cisco(37)——BGP的十三条选路原则演示_第7张图片

删除配置:

R4(config)#router bgp 10
R4(config-router)#no neighbor 24.1.1.2 route-map local in 
R4(config-router)#end

R4#clear ip bgp * soft

Cisco(37)——BGP的十三条选路原则演示_第8张图片

三:

通过As-Path的修改实现R3去往2.2.2.0/24走R1,去往8.8.8.0/24走R4。

不建议在实际的操作中修改As-Path!!!

如果你要在R2上针对R1,做一个出向的修改As-Path的值,那么,你修改的优先级是要高于自身的AS号的添加的!!会先根据route-map给这些路由添加好AS号之后,再添加自身的AS号,把路由发走(2   345);如果你要在R1上针对R2,做一个入向的修改As-Path的值,那么,R1收到路由之后,他会在你添加的AS号的后方,再添加咱们的设置(345    2)。

R2(config)#ip prefix-list 8 seq 10 permit 8.8.8.0/24

R2(config)#route-map AS permit 10
R2(config-route-map)#match ip address prefix-list 8
R2(config-route-map)#set as-path prepend 2 2 2
R2(config-route-map)#exit 

R2(config)#route-map AS permit 20                   
R2(config-route-map)#exit 

R2(config)#router bgp 2
R2(config-router)#neighbor 12.1.1.1 route-map AS out 
R2(config-router)#end

R2#clear ip bgp * soft

set as-path prepend 2 2 2:prepend为在...之前添加AS,在添加我的AS号之前给你加上你设置的AS号。

查看效果:

Cisco(37)——BGP的十三条选路原则演示_第9张图片

删除配置:

R2(config)#router bgp 2
R2(config-router)#no neighbor 12.1.1.1 route-map AS out 
R2(config-router)#end

R2#clear ip bgp * soft

Cisco(37)——BGP的十三条选路原则演示_第10张图片

四:

通过起源属性(origin)的修改实现R3去往2.2.2.0/24走R1,去往8.8.8.0/24走R4。

在R1上把8.8.8.0/24的路由给R3发送的时候,起源属性改成EGP或者incomplete。

R1(config)#ip prefix-list 8 seq 10 permit 8.8.8.0/24

R1(config)#route-map origin permit 10
R1(config-route-map)#match ip address prefix-list 8
R1(config-route-map)#set origin egp 10             
R1(config-route-map)#exit 

R1(config)#route-map origin permit 20    
R1(config-route-map)#exit 

R1(config)#router bgp 10
R1(config-router)#neighbor 3.3.3.3 route-map origin out 
R1(config-router)#end

R1#clear ip bgp * soft

查看效果:

Cisco(37)——BGP的十三条选路原则演示_第11张图片

删除配置:

R1(config)#router bgp 10
R1(config-router)#no neighbor 3.3.3.3 route-map origin out 
R1(config-router)#end

R1#clear ip bgp * soft

五:

通过MED的修改实现R2去往3.3.3.0/24的路由优选R4。

R3(config)#router bgp 10       
R3(config-router)#network 3.3.3.0 mask 255.255.255.0
R3(config-router)#end

Cisco(37)——BGP的十三条选路原则演示_第12张图片

R1(config)#access-list 3 permit 3.3.3.0 0.0.0.0

R1(config)#route-map med permit 10
R1(config-route-map)#match ip address 3
R1(config-route-map)#set metric 10
R1(config-route-map)#exit 

R1(config)#route-map med permit 20
R1(config-route-map)#exit 

R1(config)#router bgp 10
R1(config-router)#neighbor 12.1.1.2 route-map med out
R1(config-router)#end

R1#clear ip bgp * soft

查看效果:

Cisco(37)——BGP的十三条选路原则演示_第13张图片

通过扩展ping的方式判断:

Cisco(37)——BGP的十三条选路原则演示_第14张图片

从上图可以看出,原地址3.3.3.3,目的地址2.2.2.2,R3通过上面的接口给发走,R1通过12.1.1.1发给R2,到达2.2.2.2,R2再通过下面的接口把包给发出,通过R4的右边的接口发出。这说明咱们在访问2.2.2.2的时候走的是上面,回的是下面。

注意:

一台路由器收到多条相同的路由,比较MED的前提:

①:你的这些EBGP邻居来自于同一个邻居AS;

②:你收到的这些BGP路由他们的AS-Path要完全一致。

如果你是通过不同的邻居路由器收到相同的路由,这些路由的As-Path不一样,你可以在BGP进程中加一条bgp always-compare-med比较MED的好坏。

 

知识补充:

R1------R2建立邻居,在R2上针对R1发过来的路由修改一下属性。

1.使用ACL或前缀列表抓取我们想修改属性的路由

2.通过Route-map工具,调用ACL或前缀列表,针对匹配的路由进行修改

3.在BGP的进程中,针对邻居去应用route-map(in或out)

 

你可能感兴趣的:(Cisco网络技术,Cisco)