日期:2023-03-26  浏览次数:285 次

命令功能

ip ipv6-prefix命令用来配置新的IPv6地址前缀列表或给已经存在的IPv6地址前缀列表增加一个表项。

undo ip ipv6-prefix命令用来删除整个IPv6地址前缀列表或从IPv6地址前缀列表删除一个表项。

缺省情况下,没有配置IPv6地址前缀列表。

 

命令格式

ip ipv6-prefix ipv6-prefix-name [ index index-number ] { deny | permit } ipv6-address prefix-length [ match-network ] [ greater-equal greater-equal-value ] [ less-equal less-equal-value ]

undo ip ipv6-prefix ipv6-prefix-name [ index index-number ]

ip ipv6-prefix ipv6-prefix-name description text

undo ip ipv6-prefix ipv6-prefix-name description text

 

参数说明

参数 参数说明 取值
ipv6-prefix-name 指定IPv6地址前缀列表的名称,该名称必须唯一。 字符串形式,取值范围是1~169,不支持空格,区分大小写。当输入的字符串两端使用双引号时,可在字符串中输入空格。
index index-number 指定IPv6地址前缀列表的表项序号。

整数形式,取值范围是1~4294967295。缺省情况下,该序号值按照配置先后顺序依次递增,每次加10,第一个序号值为10。

说明:

一个地址前缀列表最多支持配置65535个index。

permit 指定IPv6地址前缀列表表项的匹配模式为允许。在这种情况下,如果IPV6地址在指定的前缀范围内,该IPV6地址将通过过滤而不进入下一表项的测试;否则,该IPv6地址将进入下一表项的测试。 -
deny 指定IPv6地址前缀列表表项的匹配模式为拒绝。在这种情况下,如果IPv6地址在指定的前缀范围内,该IPV6地址将不能通过过滤从而不进入下一表项的测试;否则,该IPV6地址将进入下一表项的测试。 -
ipv6-address 用IPv6地址形式来指定IPv6地址前缀范围。如果指定::,则表示匹配全零地址。 -
prefix-length 用掩码长度来指定IPv6地址前缀范围。 整数形式,取值范围为0~128。如果使用:: 0 less-equal 128,则表示匹配所有IPv6地址。
match-network 指定匹配网络地址。match-network参数只有在ipv6-address为::时才可以配置,主用是用来匹配指定网络地址的路由。例如:ip ipv6-prefix prefix1 permit :: 96可以匹配前缀长度为96的所有路由;而ip ipv6-prefix prefix1 permit :: 96 match-network可以匹配::1~::FFFF:FFFF范围内的所有路由。 -
greater-equal greater-equal-value 指定掩码长度匹配范围的下限。 参数greater-equal-value的取值限制为:prefix-length<=greater-equal-value<=less-equal-value<=128。
less-equal less-equal-value 指定掩码长度匹配范围的上限。 参数less-equal-value的取值限制为:prefix-length<=greater-equal-value<=less-equal-value<=128。参数less-equal-value取值为0表示匹配所有掩码长度的路由。
description text 指定IPv6地址前缀列表的描述信息。 字符串形式,长度范围是1~80,不支持空格,区分大小写。

地址前缀列表的每个表项都有一个索引号即参数index-number指定的值。在创建表项时,如果不配置索引号,则默认按如下规则处理:

  • 新增的索引号取同名列表中上次创建表项的索引号加10,后续以步长10进行增长。
  • 当新增的索引号增大到4294967295时,若再创建一个未配置索引号的表项,则由于索引号不能超过4294967295,此时新增的索引号取同名列表中上次创建表项的索引号加1;当索引号以步长为1增长到4294967295时,若再创建一个表项,用户需要手动指定索引号,否则会配置失败。

当待过滤的IPv6路由已匹配当前表项的IPv6地址前缀时,掩码长度可以进行精确匹配或者在一定掩码长度范围内匹配。

  • 若不配置greater-equalless-equal,则进行精确匹配,即只匹配掩码长度为prefix-length的IPv6路由。
  • 若只配置greater-equal,则匹配的掩码长度范围为[greater-equal-value,128]。
  • 若只配置less-equal,则匹配的掩码长度范围为[prefix-lengthless-equal-value]。
  • 若同时配置greater-equalless-equal,则匹配的掩码长度范围为[greater-equal-valueless-equal-value]。

 

视图

系统视图

缺省级别

2:配置级

使用指南

应用场景

IPv6地址前缀列表既可以作为IPv6前缀过滤器被各协议使用,也可以与if-match ipv6命令配合,作为路由策略的匹配条件。

IPv6地址前缀列表的每个表项都可以视为一条过滤规则,当待过滤路由匹配某一表项时,根据匹配模式即可判断该路由是否能通过地址前缀列表的过滤。IPv6地址前缀列表中的表项将按照如下原则与待过滤路由进行匹配:

  • 顺序匹配:地址前缀列表的各个表项按索引号从小到大顺序参与匹配。因此在设置表项索引号时,可以安排符合期望的匹配顺序。

  • 唯一匹配:待过滤路由只要与一个表项匹配,就不再去尝试匹配其他表项。

  • 默认拒绝:默认所有未与任何一个表项匹配的路由都视为未通过地址前缀列表的过滤。

假如现在有如下五条路由:1::1/96、1::1/128、1::1/100、2::2/96和1::2/64。下面查看使用不同的地址前缀列表的过滤效果。

表1 IPv6地址前缀列表匹配示例

序号

命令

匹配结果

原因解释

Case1

ip ipv6-prefix aa index 10 permit 1::1 96

路由1::1/96 permit,其他都deny。

这种情况属于单节点的精确匹配,只有目的地址,掩码完全相同的路由才会匹配成功,而且节点的匹配模式为permit,所以路由1::1/96被permit,属于匹配成功并被permit。根据默认拒绝原则,其他路由由于未匹配成功被deny。

Case2

ip ipv6-prefix aa index 10 deny 1::1 96

路由全部被deny。

这种情况依然属于单节点的精确匹配,但节点的匹配模式为deny,所以路由1::1/96被deny,属于匹配成功但被deny。根据默认拒绝原则,其他路由则属于未匹配成功被默认deny。

Case3

ip ipv6-prefix aa index 10 permit 1::1 96 less-equal 128

路由1::1/96,1::1/128,1::1/100被permit,其他路由被deny。

这种情况依然属于单节点的精确匹配,节点的匹配模式为permit,同时定义了less-equal等于128,也就是说前缀为1::1,掩码范围在96和128之间的路由都会被permit。根据默认拒绝原则,其他路由则属于未匹配成功被默认deny。

Case4

ip ipv6-prefix aa index 10 permit 1::1 96 greater-equal 96 less-equal 128

路由1::1/96,1::1/128,1::1/100被permit,其他路由被deny。

这种情况依然属于单节点的精确匹配,节点的匹配模式为permit,由于greater-equal等于96,less-equal等于128,也就是说前缀为1::1,掩码范围在96和128之间的路由都会被permit,所以这种配置效果等同于Case3。根据默认拒绝原则,其他路由则属于未匹配成功被默认deny。

Case5

ip ipv6-prefix aa index 10 permit 1::1 96 greater-equal 100

路由1::1/128,1::1/100被permit,其他路由被deny。

这种情况依然属于单节点的精确匹配,节点的匹配模式为permit,由于greater-equal等于100,也就是说前缀为1::1,掩码范围在100和128之间的路由都会被permit。根据默认拒绝原则,其他路由则属于未匹配成功被默认deny。

Case6

ip ipv6-prefix aa index 10 permit 1::1 96 greater-equal 100 less-equal 128

路由1::1/128,1::1/100被permit,其他路由被deny。

这种情况依然属于单节点的精确匹配,节点的匹配模式为permit,由于greater-equal等于100,less-equal等于128,也就是说前缀为1::1,掩码范围在100和128之间的路由都会被permit,所以这种配置效果等同于Case5。根据默认拒绝原则,其他路由则属于未匹配成功被默认deny。

Case7

ip ipv6-prefix aa index 10 deny 1::1 96
ip ipv6-prefix aa index 20 permit 1::1 128

路由1::1/128被permit,其他路由都被deny。

这种情况属于多节点的精确匹配。路由1::1/96在匹配index 10时,满足匹配条件,但匹配模式是deny,根据唯一匹配原则,属于匹配成功但被deny。路由1::1/128在匹配index 10时,不满足匹配条件,然后根据顺序匹配原则,继续匹配index 20,此时匹配成功,且index 20的匹配模式是permit,属于匹配成功并被permit。根据默认拒绝原则,其他路由则属于未匹配成功被默认deny。

Case8

ip ipv6-prefix aa index 10 permit :: 64 less-equal 128

路由1::1/96、1::1/128、1::1/100、2::2/96和1::2/64都被permit。

前缀为::为通配地址,当前缀为::时,可以在其后指定掩码以及掩码范围,不论掩码指定为多少,都表示掩码长度范围内的所有路由全部被permit或deny。

此时greater-equal等于64,less-equal等于128,由于::为通配地址,又由于节点的模式是permit,所以所有掩码长度在64到128的路由都被permit。

Case9

ip ipv6-prefix aa index 10 deny :: 96 less-equal 128
ip ipv6-prefix aa index 20 permit :: 0 less-equal 128

路由1::2/64被permit,其他路由都被deny。

对于index 10,greater-equal等于96,less-equal等于128,由于::为通配地址,所有掩码长度在96到128的路由全部被deny。1::2/64由于不匹配index 10,将进行index 20的匹配,对于index 20,greater-equal等于0,less-equal等于128,由于::为通配地址,所以1::2/64属于可以匹配上被permit。

Case10

ip ipv6-prefix aa index 10 deny 2::2 96
ip ipv6-prefix aa index 20 permit :: 0 less-equal 128

匹配结果:除路由2::2/96外的其他路由都被permit。

对于index 10,符合条件的路由2::2/96被deny。其他路由不匹配index 10,将进行index 20的匹配,由于都可以匹配上所以都被permit。

配置影响

如果创建一个IPv6地址前缀列表名称和索引号都重复而仅仅是匹配内容不同的表项,那么该新建的表项将覆盖原有的表项。

如果该ipv6-prefix已经被其他命令引用,建议先取消引用该ipv6-prefix的配置,再通过undo ip ipv6-prefix命令删除ipv6-prefix配置。

注意事项

如果指定ipv6-address prefix-length为:: 0,则只匹配IPv6缺省路由。

如果指定的IPv6地址前缀范围为:: 0 less-equal 128,则匹配所有IPv6路由。

因为IPv6地址前缀列表采用默认拒绝的匹配原则,所以在创建了一个或多个deny模式的表项后,需要创建一个permit :: 0 less-equal 128表项,允许所有其他IPv6路由通过。

用户下发配置后,设备会对用户下发的参数进行有效性检查和处理,其中生成的IP地址(ipv6-address)参数部分是用户指定的ipv6-addressprefix-length做“与”操作之后的结果。例如:如果指定ipv6-address prefix-length为1::1 64,则实际生成的配置为1:: 64,1::为1::1 & 0XFFFF:FFFF:FFFF:FFFF::之后的结果。

若处理后生成的IP地址(ipv6-address)参数部分为::,那么匹配的地址为通配地址,通配地址匹配路由原则如下表所示:

表2 通配地址匹配路由原则

是否包含greater-equalless-equal参数

条件

匹配结果

命令举例

处理后的配置中不包含greater-equalless-equal参数。

处理后ipv6-addressprefix-length参数为::和0。

只匹配IPv6缺省路由。

处理前:

ip ipv6-prefix aa index 10 permit 1::1 0

处理后:

ip ipv6-prefix aa index 10 permit :: 0

匹配结果:只有IPv6缺省路由被permit。

处理后ipv6-addressprefix-length参数为::和X(其中X不等于0)。

匹配码长度为X的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit ::1:1 96

处理后:

ip ipv6-prefix aa index 10 permit :: 96

匹配结果:掩码长度为96的IPv6路由被permit。

处理后的配置中包含greater-equal参数,不包含less-equal参数。

处理后ipv6-addressprefix-length参数为::和0。

匹配码长度为greater-equal~128的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit 1::1 0 greater-equal 16

处理后:

ip ipv6-prefix aa index 10 permit :: 0 greater-equal 16 less-equal 128

匹配结果:掩码长度为16~128的IPv6路由被permit。

处理后ipv6-addressprefix-length参数为::和X(其中X不等于0)。

匹配码长度为greater-equal~128的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit ::1:1 96 greater-equal 120

处理后:

ip ipv6-prefix aa index 10 permit :: 96 greater-equal 120 less-equal 128

匹配结果:掩码长度为120~128的IPv6路由被permit。

处理后的配置中不包含greater-equal参数,包含less-equal参数。

处理后ipv6-addressprefix-length参数为::和0。

匹配码长度为0~less-equal的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit 1::1 0 less-equal 120

处理后:

ip ipv6-prefix aa index 10 permit :: 0 less-equal 120

匹配结果:掩码长度为0~120的IPv6路由被permit。

处理后ipv6-addressprefix-length参数为::和X(其中X不等于0)。

匹配码长度为X~less-equal的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit ::1:1 96 less-equal 120

处理后:

ip ipv6-prefix aa index 10 permit :: 96 greater-equal 96 less-equal 120

匹配结果:掩码长度为96~120的IPv6路由被permit。

处理后的配置中包含greater-equal参数和less-equal参数。

处理后ipv6-addressprefix-length参数为::和0。

匹配码长度为greater-equal~less-equal的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit 1::1 0 greater-equal 5 less-equal 30

处理后:

ip ipv6-prefix aa index 10 permit :: 0 greater-equal 5 less-equal 30

匹配结果:掩码长度为5~30的IPv6路由被permit。

处理后ipv6-addressprefix-length参数为::和X(其中X不等于0)。

匹配码长度为greater-equal~less-equal的所有IPv6路由。

处理前:

ip ipv6-prefix aa index 10 permit ::1:1 96 greater-equal 120 less-equal 124

处理后:

ip ipv6-prefix aa index 10 permit :: 96 greater-equal 120 less-equal 124

匹配结果:掩码长度为120~124的IPv6路由被permit。

后续任务

在对已经使用的路由策略进行修改的场景中,配置IPv6地址前缀列表后,缺省情况下路由管理模块会立即通知各协议进行处理,重新应用该路由策略。但是,修改路由策略可能会执行多条命令,为了避免各协议反复重新应用还未修改完的路由策略,在配置完IPv6地址前缀列表后,如果还需要配置其他命令才能完成路由策略的修改,可使用route-policy-change notify-delay命令,延迟路由策略重新应用的时间。

 

使用实例

# 允许掩码长度在32位到64位之间的地址通过。

<sysname> system-view
[sysname] ip ipv6-prefix abc permit :: 0 greater-equal 32 less-equal 64

# 拒绝前缀为3FFE:D00::/32,且前缀长度大于32位的地址通过,允许其他的IPv6路由通过。

<sysname> system-view
[sysname] ip ipv6-prefix abc deny 3FFE:D00:: 32 less-equal 128
[sysname] ip ipv6-prefix abc permit :: 0 less-equal 128

# 配置名为p3的地址前缀列表,拒绝::1~::FFFF:FFFF范围内的所有路由通过,允许其他路由通过。

<sysname> system-view
[sysname] ip ip-prefix p3 index 10 deny :: 96 match-network
[sysname] ip ip-prefix p3 index 20 permit :: 0 less-equal 128