概述
前缀列表,专门用来匹配路由条目,而不是流量,相当于升级版的基础ACL,为什么这么说,是因为其不仅可以匹配路由条目条目的来源,还可以匹配匹配路由条目的掩码。
规则
- 一个地址前缀列表中可以创建多个索引项,每个索引对应一条过滤规则。
- 当匹配上某一索引项时,如果该索引项是permit,则这条路由被允许通过;如果该索引项是deny,则这条路由被拒绝通过。
- 当遍历了地址前缀列表中的所有索引项,都没有匹配上,那么这条路由就被拒绝通过。
如图所示,待过滤路由按照索引号从小到大的顺序进行匹配:
地址前缀列表过滤路由的原则可以总结为:顺序匹配、唯一匹配、默认拒绝。
- 顺序匹配:按索引号从小到大顺序进行匹配。同一个地址前缀列表中的多条表项设置不同的索引号,可能会有不同的过滤结果,实际配置时需要注意。
- 唯一匹配:待过滤路由只要与一个表项匹配,就不会再去尝试匹配其他表项。
- 默认拒绝:默认所有未与任何一个表项匹配的路由都视为未通过地址前缀列表的过滤。因此在一个地址前缀列表中创建了一个或多个deny模式的表项后,需要创建一个表项来允许所有其他路由通过。
ip-prefix语法
地址前缀列表通过ip ip-prefix命令进行配置,常用格式如下:
ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } ipv4-address mask-length [ greater-equal greater-equal-value ] [ less-equal less-equal-value ]
其中ipv4-address mask-length [ greater-equal greater-equal-value ] [ less-equal less-equal-value ] 用于限定过滤路由的网络号及掩码范围,参数含义如表所示。
参数含义:
- ipv4-address:用于指定网络号。
- mask-length:用于限定网络号的前多少位需严格匹配。
- greater-equal greater-equal-value:可以理解为掩码≥greater-equal-value。
- less-equal less-equal-value:可以理解为掩码≤less-equal-value。
当待过滤的路由已匹配当前表项的网络号时,掩码长度可以进行精确匹配或者在一定掩码长度范围内匹配:
- 若不配置greater-equal和less-equal,则进行精确匹配,即只匹配掩码长度为mask-length的路由。
- 若只配置greater-equal,则匹配的掩码长度范围为[greater-equal-value,32]。
- 若只配置less-equal,则匹配的掩码长度范围为[mask-length,less-equal-value]。
- 若同时配置greater-equal和less-equal,则匹配的掩码长度范围为[greater-equal-value,less-equal-value]。
通配地址(0.0.0.0)匹配示例:
通配地址0.0.0.0表示不限定网络号,只需要匹配掩码范围即可。表中列出了几种特殊的通配地址。
说明:地址前缀列表采用默认拒绝的匹配原则,在创建了一个或多个deny模式的表项后,需要创建一个permit 0.0.0.0 0 less-equal 32表项,允许所有其他路由通过。
举例
前缀列表使用方式
除了与路由策略等工具配合使用,还可以通过filter-policy配合使用对全局的发布和接收的路由信息过滤(filter-policy可以用ACL或者前缀列表进行匹配):
- ip ip-prefix命令通过与下列命令配合使用,可以以地址前缀列表为过滤条件对全局发布的路由信息进行过滤。
filter-policy export(RIP视图下)
filter-policy export(OSPF视图下)
filter-policy export (IS-IS视图下)
filter-policy export(BGP视图下) - ip ip-prefix命令通过与下列命令配合使用,可以以地址前缀列表为过滤条件对全局接收的路由信息进行过滤。
filter-policy import(RIP视图下)
filter-policy import(OSPF视图下)
filter-policy import(IS-IS视图下)
filter-policy import(BGP视图下) - ip ip-prefix命令通过与下列命令配合使用,为特定的对等体配置基于地址前缀列表的过滤器进行路由过滤。
peer ip-prefix(BGP) - 在IS-IS协议中,当为了防止次优路径而配置路由渗透时
以地址前缀列表为过滤条件控制IS-IS的Level-1路由向Level-2区域进行路由渗透。
import-route isis level-1 into level-2 filter-policy ip-prefix ip-prefix-name [ tag tag ]
以地址前缀列表为过滤条件控制IS-IS的Level-2路由向Level-1区域进行路由渗透。
import-route isis level-2 into level-1 filter-policy ip-prefix ip-prefix-name [ tag tag ]