AR路由器V200R003版本使用前缀列表进行BGP路由过滤失败

发布时间:  2016-02-03 浏览次数:  189 下载次数:  0
问题描述

      某单位分局使用AR3260(版本:V200R003C00SPC200)跟总部的NE40E进行广域网互联,分布和总部之间运行BGP。因为初期网络规划不当,网络中的路由较为混乱,出于安全考虑,总局要求分局对路由发布和接收进行控制。

目前从分局从总局收到的路由范围如下:

1~64.0.0.0/8~32

172.16.0.0/16~32

192.168.1.0/14~32

而根据要求,分局只需要接收1~64.0.0.0/8~32的总部业务路由,因此需要在分局AR3260BGP进程中使用路由策略进行import方向的路由过滤,相关配置如下(涉及客户信息,地址为演示地址):

ip ip-prefix data_zongbu index 10 permit 64.0.0.0 8 less-equal 32

ip ip-prefix data_zongbu index 20 permit 0.0.0.0 3 less-equal 32

route-policy data_zongbu_import permit node 10

    if-match ip-prefix data_zongbu

bgp 65001

    router-id  20.1.1.100

    peer 20.1.1.1 as 65001

    peer 20.1.1.1 connect-interface loopback 0

 peer 20.1.1.1 route-policy data_zongbu import

在以上路由策略部署完后,在设备上通过:refresh bgp 20.1.1.1 import重新接收来自总部的BGP路由,是路由策略生效。但是在路由刷新完成后,检查AR3260上的BGP路由表,依然发现来自总部的:172.16.0.0/8~32192.168.1.0/24~32的路由,路由过滤没有生效。

处理过程

1.在分局AR3260上通过:

1)执行 display bgp routing-table peer 20.1.1.1 received-routes 检查从总部收到的BGP路由;

2)执行display bgp routing-table peer 20.1.1.1 accepted-routes  检查应用路由策略过滤后的BGP路由;

对比发现两者一致,表示没有路由被过滤掉,原因可能是:

(1)   配置错误,导致路由策略没有生效;

(2)   匹配参数错误,路由策略生效,但是没有将除1~64.0.0.0/8~32的路由匹配出;

2.检查前缀列表配置、路由策略配置、BGP进程中调用路由策略的配置,通过:

执行display route-policy data_zongbu,确认route-policy调用是否生效:

dis route-policy data_zongbu

route-policy : data_zongbu

   permit : 10 (matched counts: 231)

   Match clauses :

   if-match ip-prefix data_zongbu

 

判断路由策略调用没有错误。通过将前缀列表修改为以下进行验证:

ip ip-prefix data_zongbu index 10 permit 64.0.0.0 8 less-equal 32

检查AR3260上的BGP路由表,发现路由表中来自总部的BGP路由只剩下64.0.0.0/8,因此路由策略是生效的,问题应该是除1~64.0.0.0/8~32的路由没有 被匹配出来,导致过滤失败,并且因为index 10 的前缀列表是生效的,因此可能和0.0.0.0的匹配参数相关。

3.AR路由器的产品文档中进行检索,产品文档终对前缀列表使用0.0.0.0作为匹配参数有如下解释:

IP地址为0.0.0.0时表示通配地址,表示掩码长度范围内的所有路由都被PermitDeny

因此判断是因为误用了0.0.0.0的通配地址,导致掩码为8~32的所有路由都被匹配。

根因

在前缀列表中错误的使用了0.0.0.0的通配地址,导致掩码为8~32的所有路由被匹配。

解决方案

解决方案:

1.    使用ACL代替ip-prefix作为过滤器匹配参数:

acl 2000

rule 10 permit source 64.0.0.0 0.255.255.255

rule 20 permit source 0.0.0.0 63.255.255.255

 

route-policy data_zongbu permit node 10

if-match acl 2000

2.    升级至V200R005以后的版本,在前缀列表中使用match-network参数进行路由匹配:

ip ip-prefix data_zongbu index 10 permit 64.0.0.0 8 less-equal 32

ip ip-prefix data_zongbu index 20 permit 0.0.0.0 3 match-network less-equal 32

 

route-policy data_zongbu permit node 10

if-match ip-prefix data_zongbu

建议与总结

使用ip-prefix进行路由过滤时,需要注意0.0.0.0为通配地址,表示掩码长度范围内的所有路由都都将被permit或者deny

END