四:仅发送聚合路由和选定的明细路由
在上述场景下,通过仅发送聚合路由和选定的明细路由,我们还可以实现链路的备份和负载分担,方法如下:
1:让R1-R2的链路只宣告192.168.1.0/24和192.168.2.0/24这两条路由。
2:让R3-R4的链路只宣告192.168.3.0/24和192.168.4.0/24这两条路由
3:通过上述两条链路宣告聚合路由作为备份,再任一条链路出现故障的情况下,所有该链路上访问AS100的流量都会迅速被切换到另外一条链路上。
这里,我们需要R1和R3分别发送聚合路由和一部分明细路由,这时,我们会用到aggregate命令的另外一个参数“suppress-policy”。下面给出R1和R3的关键配置:
R1的关键配置:
#
bgp 100
peer 11.1.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 suppress-policy SUPPRESS /聚合路由时使用抑制列表SUPPRESS,对于匹配路由策略SUPPRESS的明细路由进行抑制。
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable
#
route-policy SUPPRESS permit node 5 /配置路由策略,注意这里只能配置if-match子句,用来匹配被抑制的路由。
if-match ip-prefix SUPPRESS
#
ip ip-prefix SUPPRESS index 10 permit 192.168.3.0 24 /配置前缀列表
ip ip-prefix SUPPRESS index 20 permit 192.168.4.0 24
#
R3的关键配置:
#
bgp 100
peer 12.1.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 suppress-policy SUPPRESS
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 12.1.1.2 enable
#
route-policy SUPPRESS permit node 5
if-match ip-prefix SUPPRESS
#
ip ip-prefix SUPPRESS index 10 permit 192.168.1.0 24
ip ip-prefix SUPPRESS index 20 permit 192.168.2.0 24
#
我们通过抑制特定的明细路由,实现了R1和R3只宣告聚合路由和特定的明细路由,在R5上查看BGP路由表:
可以看到,R5上聚合路由有两个下一跳,而192.168.1.0/24和192.168.2.0/24这两条路由的下一跳为R2,而192.168.3.0/24和192.168.4.0/24这两条路由的下一跳为R4。这就实现了访问AS100不同网段的流量的负载分担,而一旦有一条链路出现故障,由于聚合路由的存在,可以将流量快速切换到另外一条链路上。
五:仅聚合特定的明细路由
依然是这个场景下,假定我们要求R1只将192.168.1.0/24和192.168.2.0/24这两条路由进行聚合,而聚合其余的明细路由。如图:
这里,我们可以用到aggregate命令的“origin-policy”参数。下面给出R1的具体配置:
R1的关键配置:
#
bgp 100
peer 11.1.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 detail-suppressed origin-policy ORIGIN /这里只有匹配路由策略ORIGIN的路由被聚合,其他明细路由未被聚合。并只宣告聚合路由
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable
#
route-policy ORIGIN permit node 5 /配置路由策略ORIGIN,注意这里只能配置if-match子句,匹配前缀列表ORIGIN的路由
if-match ip-prefix ORIGIN
#
ip ip-prefix ORIGIN index 10 permit 192.168.1.0 24 /配置前缀列表
ip ip-prefix ORIGIN index 20 permit 192.168.2.0 24
#
这样,就实现了只聚合特定的明细路由,而其余明细路由未被聚合,我们查看一下R2的BGP路由表:
可以看到,R2的BGP路由表中,只有一条聚合路由,和两条明细路由。由于192.168.1.0/24和192.168.2.0/24这两条路由已被聚合,而R1上又配置了detail-suppressed参数,所以这两条明细路由并未发送给R2,而其余明细路由由于未被聚合,所以被发送给了R2,这里还需要说明的是,只有被聚合的明细路由(192.168.1.0/24和192.168.2.0/24)均失效的情况下,聚合路由才会实效,而其余明细路由失效与否是不会影响聚合路由的。
六:修改聚合路由的属性
还是这个场景,在R5上,聚合路由的下一跳有两个,分别是R2和R4,而我们很可能要求手动实现R5选择R4作为优选下一跳,而选择R2作为备份下一跳。看过第五回的小伙伴们可能会说,MED属性可以解决这个问题。如果用MED属性,我们需要在R2和R4上部署路由策略,这里我们采用另外一种方式:在发送聚合路由的时候,可以修改聚合路由的属性。
由于明细路由均为我们手动Network进R1的,所以路由的Origin属性均为IGP,而当两条BGP路由的Origin分别为IGP和Incomplete时,BGP会优选Origin属性为IGP的路由。所以我们可以将R1发送给R2的聚合路由属性修改为Incomplete。
这时,我们会用到了aggregate命令的另一个参数“attribute-policy”。下面给出具体配置:
R1的关键配置:
#
bgp 100
peer 11.1.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 detail-suppressed attribute-policy ATTRIBUTE /按照路由策略ATTRIBUTE修改聚合路由属性
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable
#
route-policy ATTRIBUTE permit node 5 /配置路由策略ATTRIBUTE修改属性为incomplete
apply origin incomplete
#
我们查看R5的BGP路由表:
可以看到,BGP优选了R4作为优选下一跳,由于R4对应的路由Ogn值为“I”代表该路由的Origin属性为IGP,而R2对应的路由的Ogn值为“?”代表该路由的Origin属性为Incomplete。
交换机侃侃而谈,与会众人均点头称是。IP长老点头笑道:“自古英雄出少年,路由老祖门下,果然卓有见识,名不虚传啊,这管理网络江湖中路由,和优化路由表的任务就交给你了!”
本期问题:到此,我们已经提到了BGP的多种属性。小伙伴们可能会有困扰,这么多属性,如果BGP的选路结果矛盾该怎么办呢?这里小伙伴们可以先行思考一下,我们会在下期做详细的解答。
转载于:https://blog.51cto.com/hanjh8/1572032