「干货」交换机练功大法——名扬天下(二)

上期问题

BGP路由常常数以万计,如果有大量不同但是又超级类似的团队属性需要实施同样的路由策略(列如:需要对携带团队属性“100:1、200:1、300:1、400:1、500:1…”的路由实施一样的策略),该如何简化配置呢?

——回答

参照我们上回所说,如果需要对携带团队属性“100:1、200:1、300:1、400:1、500:1…”的路由实施一样的策略,我们必须配置多条团队属性过滤器:

ip community-filter 1 permit 100:1

ip community-filter 2 permit 200:1

ip community-filter 3 permit 300:1

ip community-filter 4 permit 400:1

ip community-filter 5 permit 500:1

这样不免超级麻烦,这时我们可以用到高级团队属性过滤器。高级团队属性过滤器作用和普通团队属性过滤器一致,不同点就在于其过滤器的编号为100~199。高级团队属性过滤器可以使用正则表达式来制定团体,这一点在使用AA:NN格式的团队属性时超级有用。

如上面这个例子,如果我们使用高级团队属性过滤器,则只需要配置一条命令即可:

ip community-filter 101 permit .*:1

关于正则表达式,这里不多做介绍。在使用路由策略,尤其是使用AS_PATH和团队属性时,正则表达式是一个超级有用的工具,可以极大的降低我们的配置工作量,有兴趣得小伙伴可以查找相关资料了解。

本期内容开始

交换机一行人路上稍遇拖延,赶到网络武林大会之时,各大门派都已然到了。

交换机忙入场落座,环顾四周,中间一席,坐的正是那武林盟主IP长老。

见参会者已到齐,IP长老起身,对着场下众人摆摆手,道:“承蒙诸位赶来参会,老朽感激不尽,诸位匆匆赶来,想必还未曾相互认识,老朽忝居主位,就为大家介绍一下。这位便是VPN掌门虚通长老。”

说罢,一老者站起来向众人致意,旁边站着一明艳少女。

交换机定睛望去,不由吃了一惊,这正是那日在路上设阵相阻的老者,未想到竟是这VPN一派之长。霎时间心头涌起了一阵自得之意,手心中微微出汗。

VPN享誉江湖,自己居然曾战胜过VPN门下阵法,实是意外之喜。但见那虚通长老身旁的少女甚是眼熟,好似在哪里见过,却一时想不起来。0

正想间,IP长老已介绍完场上众人,继续说道:“这次邀诸位前来,实是有一事困扰江湖日久,想借诸位之智,看有无妙方可解。

江湖上门派日多,路由表规模已10万计,如此庞大的路由,管理之难,已日益严重,虽有BGP神功调配,也渐渐难以支撑,不知各位可有解决之道。”

路由问题,自第一由路由门下解决。众人的目光一下投向交换机。交换机思考半晌,说道:“路由管理之难,其中一要因在于地址分配混乱,路由随意发布。

若以规范,使路由先聚合,而后发布,必可降低路由表大小,缓解路由管理之难。”

题外话

由于BGP中自动聚合限制超级多,实际效果超级不理想,所以绝大部分情况下,我们会采用手动聚合的方式。

手动聚合有两种方式,下面就给小伙伴们介绍一下:

一:利用静态路由进行聚合

这种方式是先在路由表中为聚合地址创建静态表项,之后再利用network命令宣告该聚合地址,如下面这个例子:

「干货」交换机练功大法——名扬天下(二)

如图,AS100中有192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24四个内部网络,目前要将4个内部网络的路由聚合成一条192.168.0.0/16这条路由。

R1的关键配置:

#

bgp 100

peer 11.1.1.2 as-number 200

#

ipv4-family unicast

undo synchronization

network 192.168.0.0 255.255.0.0 /将聚合路由发布到BGP中

peer 11.1.1.2 enable

#

ip route-static 192.168.0.0 255.255.0.0 NULL0 /配置一条指向NULL0的静态聚合路由

#

由于聚合路由本身并不是合法的终端目的地址,因而静态路由指向Null接口,该路由在R1的路由表中仅代表一条准确路由。

如果数据包的目的地址属于AS100的C类地址,那么AS100的外部路由器将撇配该聚合路由并转发给R1,到了路由器R1之后,数据包将被匹配到更准确的地址,并被转发到正确的内部下一跳路由器。

如果因某种导致更准确的C类地址不在R1路由表中的话,将把该数据包转发到Null接口并予以丢弃。我们查看R2的BGP路由表:

「干货」交换机练功大法——名扬天下(二)

R2的路由表中只有一条聚合路由,其他明细路由均未进入R2的路由表。

二:通过aggregate命令手动聚合路由,并抑制明细路由

在上面这种简单的场景下,通过静态路由进行聚合的方式已经足够了,但是对于拓扑结构或者路由策略稍微复杂一些的情况,通过静态路由进行聚合的方式不提议被使用,我们可以使用aggregate命令进行手动聚合。

下面我们具体说明下aggregate命令极其参数的作用。

先在上面那个简单的例子中使用aggregate命令。

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

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

#

想要宣告由aggregate命令指定的聚合路由,必须通过重分布或者network命令使至少一个更准确的地址进入BGP路由表。这里我们查看R1和R2的BGP路由表:

「干货」交换机练功大法——名扬天下(二)「干货」交换机练功大法——名扬天下(二)

可以看到,R1的BGP路由表中包含了所有准确路由,而R2的路由表中只有一条聚合路由,这是由于我们在aggregate命令中配置了detail-suppressed参数,使R1只会将聚合路由发送给R2。而R1的BGP路由表中,明细路由前面都有“s”的标志,代表这些路由已经被抑制。

三:同时发送聚合路由和明细路由

对于像上面这种简单拓扑来说,的确 不需要同时宣告聚合路由和明细路由。我们再看一下下面这个例子:

「干货」交换机练功大法——名扬天下(二)

如图,AS100多归属到AS200,AS200需要从AS100接受全部路由以设置路由策略,但AS200仅能向AS300发送聚合路由。这个场景下,AS100就需要将全部路由发送给AS200。

这里一种简单的解决方式是利用我们上一回中所说的团队属性。让AS100发送给AS200的明细路由携带NO_EXPORT团队属性。配置以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 /路由聚合为192.168.0.0/16,并且不抑制明细路由

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

peer 11.1.1.2 route-policy COMMUNITY export /对R2出方向使用路由策略COMMUNITY

peer 11.1.1.2 advertise-community /对R2发送携带团队属性的路由

#

route-policy COMMUNITY permit node 5 /配置路由策略COMMUNITY,对匹配前缀列表AGGREGATE的路由不设置团队属性

if-match ip-prefix AGGREGATE

apply community none

#

route-policy COMMUNITY permit node 10 /未匹配上一个节点的路由,为其打上团队属性NO_EXPORT,这样就实现了仅对明细路由打上NO_EXPORT属性

apply community no-export

#

ip ip-prefix AGGREGATE index 10 permit 192.168.0.0 16 /配置前缀列表AGGREGATE仅匹配192.168.0.0/16

#

我们通过命令display bgp routing-table 192.168.0.0查看R2上聚合路由的详细信息:

「干货」交换机练功大法——名扬天下(二)

可以看到,该路由已被并标明是一条聚合路由,并且在AS100进行聚合,始发路由器的ROUTER ID是11.1.1.1。该路由并未携带任何团队属性。

我们再查看R5的BGP路由表:

「干货」交换机练功大法——名扬天下(二)

R5上只存在聚合路由,明细路由由于携带NO_EXPORT团队属性,并未发送给R5。

四:仅发送聚合路由和选定的明细路由

在上述场景下,通过仅发送聚合路由和选定的明细路由,我们还可以实现链路的备份和负载分担,方法如下:

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不同网段的流量的负载分担,而一旦有一条链路出现故障,由于聚合路由的存在,可以将流量快速切换到另外一条链路上。

五:仅聚合特定的明细路由

六:修改聚合路由的属性

因内容太丰富,五、六两点已单独整理成到公众号啦,记得关注【IE网工训练营】哦

© 版权声明

相关文章

暂无评论

none
暂无评论...