ip community-filter命令用来增加一个团体属性过滤器(表项)。
undo ip community-filter命令用来删除团体属性过滤器(表项)。
缺省情况下,系统中不存在团体属性过滤器(表项)。
ip community-filter { basic comm-filter-name | basic-comm-filter-num } { permit | deny } [ community-number | aa:nn | internet | no-export-subconfed | no-advertise | no-export ] &<1-20>
ip community-filter { advanced comm-filter-name | adv-comm-filter-num } { permit | deny } regular-expression
undo ip community-filter { basic comm-filter-name | basic-comm-filter-num } { permit | deny } [ community-number | aa:nn | internet | no-export-subconfed | no-advertise | no-export ] &<1-20>
undo ip community-filter { advanced comm-filter-name | adv-comm-filter-num } [ permit | deny ] [ regular-expression ]
| 参数 | 参数说明 | 取值 |
|---|---|---|
| basic comm-filter-name | 指定基本团体属性过滤器名称。 | 字符串形式,区分大小写,不支持空格,长度范围是1~51,且不能都是数字。 说明:
当输入的字符串两端使用双引号时,可在字符串中输入空格。 |
| basic-comm-filter-num | 指定基本团体属性过滤器号。 | 整数形式,取值范围1~99。 |
| deny | 指定团体属性过滤器的匹配模式为拒绝。 | - |
| permit | 指定团体属性过滤器的匹配模式为允许。 | - |
| community-number | 指定团体号。 | 整数形式,取值范围0~4294967295。 |
| aa:nn | 指定团体号。 一条命令最多可以指定20个团体属性号。
|
aa和nn都是整数形式,取值范围都是0~65535。 |
| internet | 可以向任何对等体发送匹配的路由。 | - |
| no-export-subconfed | 不向自治系统外部通告路由,如果使用了联盟,则不会向联盟中的其他子自治系统通告路由。 | - |
| no-advertise | 不通告给其他对等体。 | - |
| no-export | 不向自治系统外部通告路由,如果使用了联盟,则不向联盟外部通告路由,但会通告给联盟中的其他子自治系统。 | - |
| advanced comm-filter-name | 指定高级团体属性过滤器名称。 | 字符串形式,区分大小写,不支持空格,长度范围是1~51,且不能都是数字。 说明:
当输入的字符串两端使用双引号时,可在字符串中输入空格。 |
| adv-comm-filter-num | 指定高级团体属性过滤器号。 | 整数形式,取值范围100~199。 |
| regular-expression | 指定匹配团体属性的正则表达式。 | 字符串形式,长度范围是1~255。 |
应用场景
团体属性是BGP的私有属性,可以用于对BGP路由进行过滤。与if-match community-filter配合使用,可以作为Route-Policy中的匹配条件。
注意事项
在基本团体属性过滤器只能指定团体号或知名团体属性,在高级团体属性过滤器中则可以指定正则表达式作为匹配条件。
配置基本团体属性过滤器可通过命令ip community-filter basic comm-filter-name或命令ip community-filter basic-comm-filter-num进行配置。前者可以指定基本团体属性过滤器的名称,但名称必须包含非数字字符,一次可以配置20个团体号。后者只能配置过滤器号是1~99的基本团体属性,一次可以配置20个团体号。
配置高级团体属性过滤器可通过命令ip community-filter advanced comm-filter-name或命令ip community-filter adv-comm-filter-num进行配置。前者可以指定高级团体属性过滤器的名称,但名称必须包含非数字字符。后者只能配置过滤器号是100~199的高级团体属性。
community-filter配置的规则之间是“与”的关系,这与rd-filter是不同的。原因是每条路由只可能有一个RD,却可以同时具有多个Community。
例如,将community-filter配置成下面两种形式,过滤的效果是不一样的。
形式一:
ip community-filter 1 permit 100:1 200:1 300:1
形式二:
ip community-filter 1 permit 100:1
ip community-filter 1 permit 200:1 300:1
以上community-filter的配置中,每一行规则中的Community必须是路由的Community集合的子集,该行规则才能匹配。
而在下面rd-filter的配置中,两种形式的过滤效果是一样的。
形式一:
ip rd-filter 100 permit 100:1 200:1 2.2.2.2:1 3.3.3.3:1
形式二:
ip rd-filter 100 permit 100:1 200:1
ip rd-filter 100 permit 2.2.2.2:1
ip rd-filter 100 permit 3.3.3.3:1
在Route-Policy中用命令apply comm-filter delete删除团体属性过滤器值的时候,所引用的ip community-filter命令每条只能包含一个团体属性,如果要删除多个团体属性,则可通过配置多条命令来解决。如果在同一个过滤器号下配置了多个团体属性,则这几个属性都无法删除。举例请参见apply comm-filter delete。
团体属性过滤器的默认行为是deny,即路由如果没有在某一次过滤中被permit则最终不能通过该过滤器的过滤。如果一个过滤器中的所有过滤规则都是deny,则没有路由能通过该过滤器的过滤,这种情况下需要在多次(或一次)deny之后设置一次permit,允许其余所有路由通过过滤器的过滤。
如果该community-filter已经被其他命令引用,建议先取消引用该community-filter的配置,再通过undo ip community-filter命令删除community-filter配置。
后续任务
配置了团体属性过滤器后,缺省情况下,路由管理模块RM(Route Management)会立即通知各个协议应用该过滤器进行过滤。如果需要延迟过滤器的生效时间,需使用命令route-policy-change notify-delay配置延迟生效时间。
使用display ip community-filter可查看该过滤器的详细配置。