10-路由策略配置
本章节下载: 10-路由策略配置 (282.30 KB)
目 录
路由策略是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。设备可以使用路由策略来控制路由的发布、控制路由的接收、管理引入的路由和设置路由的属性。
路由策略的实现步骤如下:
(1) 定义规则:定义将要实施路由策略的路由信息的特征,即定义一组匹配规则。可以灵活使用过滤器来定义各种匹配规则。
(2) 应用规则:将匹配规则应用于路由的发布、接收和引入等过程的路由策略中。
过滤器可以看作是路由策略过滤路由的工具,单独配置的过滤器没有任何过滤效果,只有在路由协议的相关命令中应用这些过滤器,才能够达到预期的过滤效果。
ACL(Access Control List,访问控制列表)可以指定IP地址和子网范围,用于匹配路由信息的目的网段地址或下一跳地址。
有关ACL的详细介绍,请参见“ACL和QoS配置指导”中的“ACL”。
地址前缀列表的作用类似于ACL,但比它更为灵活,且更易于用户理解。使用地址前缀列表过滤路由信息时,其匹配对象为路由信息的目的地址。
一个地址前缀列表由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个索引号来标识,索引号指明了在地址前缀列表中进行匹配检查的顺序。
每个表项之间是“或”的关系,在匹配的过程中,路由器按升序依次检查由索引号标识的各个表项,只要有某一表项满足条件,就意味着通过该地址前缀列表的过滤(不再对下一个表项进行匹配)。
RD属性列表是针对RD属性信息的匹配条件,仅用于VPN路由的过滤。RD(Route Distinguisher,路由标识符)的作用是将其添加到一个IPv4地址前缀前,使之成为全局唯一的VPN-IPv4地址前缀。每个RD属性列表可以包含多个表项,每一个表项会指定一个RD号的范围,并用一个表项编号来标识,表项编号指明了在RD属性列表中进行匹配检查的顺序。
tag-list仅用于IGP路由的过滤。IGP的路由信息中包含路由标记,tag-list就是针对路由标记指定匹配条件。
路由策略是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。路由策略可以使用前面几种过滤器定义自己的匹配规则。
一个路由策略可以由多个节点构成,每个节点是匹配检查的一个单元。在匹配过程中,系统按节点序号升序依次检查各个节点。不同节点间是“或”的关系,如果通过了其中一个节点,就意味着通过该路由策略,不再对其他节点进行匹配(配置了continue子句的情况除外)。
每个节点对路由信息的处理方式由匹配模式决定。匹配模式分为permit和deny两种。
· permit:指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点的匹配(配置了continue子句的情况除外);如果路由信息没有通过该节点过滤,将进入下一个节点继续匹配。
· deny:指定节点的匹配模式为拒绝模式(此模式下apply子句和continue子句不会被执行)。当路由信息通过该节点的过滤后,将被拒绝通过该节点,不进入下一个节点的匹配;如果路由信息没有通过该节点的过滤,将进入下一个节点继续匹配。
每个节点可以由一组if-match、apply和continue子句组成。
· if-match子句:定义匹配规则,匹配对象是路由信息的一些属性。同一节点中不同类型的if-match子句是“与”的关系,相同类型的if-match子句是“或”的关系,只有满足节点内所有类型if-match子句指定的匹配条件,才能通过该节点的匹配。
· apply子句:指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。
· continue子句:用来配置下一个执行节点。当路由成功匹配当前路由策略节点(必须是permit节点)时,可以指定路由继续匹配同一路由策略内的下一个节点,这样可以组合路由策略各个节点的if-match子句和apply子句,增强路由策略的灵活性。配置了continue子句后,路由即使未通过下一个执行节点的匹配,也会通过该路由策略的过滤。如果需要拒绝该路由通过,则需要在下一个执行节点之后添加一个没有子句的deny节点。
if-match、apply和continue子句可以根据应用进行设置,都是可选的。
· 如果只过滤路由,不设置路由的属性,则不需要使用apply子句。
· 如果某个permit节点未配置任何if-match子句,则该节点匹配所有的路由。
· 通常在多个deny节点后设置一个不含if-match子句和apply子句的permit节点,用于允许其它的路由通过。
路由策略配置任务如下:
(1) (可选)配置过滤器
¡ 配置RD属性列表
¡ 配置路由标记列表
(2) 配置路由策略
a. 创建路由策略
b. 配置if-match子句
c. 配置apply子句
d. 配置continue子句
一个IPv4地址前缀列表可以有若干条表项,每一表项指定一个地址前缀范围。表项之间的过滤关系是“或”的关系,即通过一条表项的过滤就意味着通过该IPv4地址前缀列表的过滤。若没有通过任一表项的过滤,则不能通过该IPv4地址前缀列表的过滤。
如果将ip-address mask-length指定为0.0.0.0 0,则只匹配缺省路由。如果需要匹配所有路由,则应配置为0.0.0.0 0 less-equal 32。
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。要允许其它所有IPv4路由通过,需要在多条deny模式的表项后定义一条permit 0.0.0.0 0 less-equal 32表项。
(1) 进入系统视图。
system-view
(2) 配置IPv4地址前缀列表。
ip prefix-list prefix-list-name [ index index-number ] { deny | permit } ip-address mask-length [ greater-equal min-mask-length ] [ less-equal max-mask-length ]
一个IPv6地址前缀列表可包含多个表项,一个表项指定一个地址前缀范围。表项之间的过滤关系是“或”,即通过一个表项就可通过该IPv6地址前缀列表的过滤。没有通过任何一个表项的过滤就意味着没有通过该IPv6地址前缀列表的过滤。
如果将ipv6-address prefix-length指定为:: 0,则只匹配缺省路由。如果需要匹配所有路由,则应配置为:: 0 less-equal 128。
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。要允许其它所有IPv6路由通过,需要在多条deny模式的表项后定义一条permit :: 0 less-equal 128表项。
(1) 进入系统视图。
system-view
(2) 配置IPv6地址前缀列表。
ipv6 prefix-list prefix-list-name [ index index-number ] { deny | permit } ipv6-address { inverse inverse-prefix-length | prefix-length [ greater-equal min-prefix-length ] [ less-equal max-prefix-length ] }
RD属性列表用于过滤VPN路由信息。一个RD属性列表可以包含多个表项。在匹配过程中,路由器按表项编号的升序,依次检查各个表项。各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该RD属性列表。
(1) 进入系统视图。
system-view
(2) 配置RD属性列表。
ip rd-list rd-list-number [ index index-number ] { deny | permit } route-distinguisher&<1-10>
一个路由标记列表中可以定义多个表项。在匹配过程中,各表项之间是“或”的关系,即只要路由信息通过该列表中的一条表项,就认为通过该路由标记列表。
(1) 进入系统视图。
system-view
(2) 配置路由标记列表。
route tag-list tag-list-number [ index index-number ] { deny | permit } tag-value&<1-32>
路由策略中至少应该有一个节点的匹配模式是permit。如果路由策略的所有节点都是deny模式,则没有路由信息能通过该路由策略。
(1) 进入系统视图。
system-view
(2) 创建路由策略,并进入该路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
(3) (可选)配置当前策略节点的描述信息。
description text
在一个节点中,可以没有if-match子句,也可以有多个if-match子句。当不指定if-match子句时,如果该节点的匹配模式为允许模式,则所有路由信息都会通过该节点的过滤;如果该节点的匹配模式为拒绝模式,则所有路由信息都会被拒绝。
如果配置了多条相同类型的if-match子句,设备在显示路由策略时,会将这些if-match子句合并为一条if-match子句。如果合并后的if-match子句超过命令行最大长度,则这些相同类型的if-match子句会分成多条显示,这些子句之间是“或”的关系,即满足一个匹配条件,就认为匹配该if-match语句。
对于if-match子句指定的ACL、前缀列表等信息,限制如下:
· 如果一个节点中if-match子句只指定了IPv6 ACL,没有指定IPv4 ACL,所有的IPv4路由信息都会匹配这个节点。如果一个节点中if-match子句只指定IPv4 ACL,没有指定IPv6 ACL,所有的IPv6路由信息都会匹配这个节点。
· 如果if-match子句对应的ACL不存在,或存在但是未配置任何规则,则默认满足该匹配条件。如果if-match子句对应的ACL存在并且有规则,但是没有匹配的规则或匹配到的规则是deny模式,则默认不满足该匹配条件。
· 如果if-match子句对应的前缀列表不存在,则默认满足该匹配条件。如果if-match子句对应的前缀列表中没有匹配的规则或者该列表是deny模式,则默认不满足该匹配条件。
使用访问控制列表作为过滤器时,需指定高级ACL来匹配路由信息。在创建ACL规则时,rule [ rule-id ] permit ip source sour-addr sour-wildcard destination dest-addr dest-wildcard中的source sour-addr sour-wildcard用来匹配路由的目的网络地址,destination dest-addr dest-wildcard用来匹配路由的掩码。需要注意的是,本命令中指定的路由掩码的格式为点分十进制,例如,如果需要匹配3.3.3.0/24的路由,则指定的规则应为rule [ rule-id ] permit ip source 3.3.3.0 0.0.0.255 destination 255.255.255.0 0.0.0.255。
(1) 进入系统视图。
system-view
(2) 进入路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
(3) 配置通过ACL或IP地址前缀列表匹配路由。
(IPv4网络)
if-match ip { address | next-hop | route-source } { acl { ipv4-acl-number | name ipv4-acl-name } | prefix-list prefix-list-name }
(IPv6网络)
if-match ipv6 { address | next-hop | route-source } { acl { ipv6-acl-number | name ipv6-acl-name } | prefix-list prefix-list-name }
缺省情况下,未配置通过ACL或IP地址前缀列表匹配路由。
路由策略使用非VPN的ACL进行路由过滤。
(4) 配置基于路由信息的匹配条件。
¡ 配置路由信息的路由开销匹配条件。
if-match cost cost-value
¡ 配置路由信息的出接口匹配条件。
if-match interface { interface-type interface-number }&<1-16>
¡ 配置路由信息类型匹配条件。
if-match route-type { external-type1 | external-type1or2 | external-type2 | internal | nssa-external-type1 | nssa-external-type1or2 | nssa-external-type2 } *
¡ 配置IGP路由信息标记的匹配条件。
if-match tag tag-value
¡ 配置IGP路由标记列表的匹配条件。
if-match tag-list tag-list-number
缺省情况下,未配置基于路由信息的匹配条件。
(5) 配置VPN路由RD属性的匹配条件。
if-match rd-list rd-list-number
缺省情况下,未配置VPN路由RD属性的匹配条件。
(1) 进入系统视图。
system-view
(2) 进入路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
(3) 配置路由开销。
¡ 配置路由信息的路由开销。
apply cost [ + | - ] cost-value
缺省情况下,未配置路由信息的路由开销。
¡ 配置路由信息的开销类型。
apply cost-type { type-1 | type-2 }
缺省情况下,未配置路由信息的开销类型。
(4) 配置路由信息的下一跳地址。
(IPv4网络)
apply ip-address next-hop ip-address [ public | vpn-instance vpn-instance-name ]
(IPv6网络)
apply ipv6 next-hop ipv6-address
缺省情况下,未配置路由信息的下一跳地址。
对于引入的路由,使用本命令设置下一跳地址无效。
(5) 配置路由优先级。
¡ 配置路由的IP优先级。
apply ip-precedence { value | clear }
缺省情况下,未配置路由的IP优先级。
¡ 配置路由协议的优先级。
apply preference preference
缺省情况下,未配置路由协议的优先级。
¡ 配置路由收敛优先级。
apply prefix-priority { critical | high | medium }
缺省情况下,路由收敛优先级为低(Low)。
(6) 配置IGP路由信息的标记。
apply tag tag-value
缺省情况下,未配置IGP路由信息的标记。
(7) 配置快速重路由备份。
(IPv4网络)
apply fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ip-address ] | backup-nexthop ip-address }
(IPv6网络)
apply ipv6 fast-reroute { backup-interface interface-type interface-number [ backup-nexthop ipv6-address ] | backup-nexthop ipv6-address }
缺省情况下,未配置快速重路由备份。
当配置continue子句的多个节点配置相同的apply子句时:
· 如果apply子句没有叠加属性,只是子句的值不相同时,则以最后一个节点的apply子句为准。
· 如果配置的是有叠加属性的apply子句,则属性会全部叠加到路由上,具体如下:
¡ 命令apply as-path不指定参数replace或者clear。
¡ 命令apply cost指定参数+或-。
¡ 命令apply community指定参数additive。
¡ 命令apply extcommunity指定参数additive。
当配置continue子句的多个节点配置apply community子句时,使用命令行apply comm-list delete不能删除前面节点中配置的团体属性。
(1) 进入系统视图。
system-view
(2) 进入路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
(3) 配置下一个执行节点。
continue [ node-number ]
缺省情况下,未配置下一个执行节点。
下一个执行节点序列号必须大于当前节点序列号。
在完成上述配置后,在任意视图下执行display命令可以显示配置后路由策略的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除路由策略的统计信息。
操作 |
命令 |
显示IPv4地址前缀列表的统计信息 |
display ip prefix-list [ name prefix-list-name ] |
显示RD属性列表信息 |
display ip rd-list [ rd-list-number ] |
显示IPv6地址前缀列表的统计信息 |
display ipv6 prefix-list [ name prefix-list-name ] |
显示IGP路由标记列表信息 |
display route tag-list [ tag-list-number ] |
显示路由策略信息 |
display route-policy [ name route-policy-name ] |
清除IPv4地址前缀列表的统计信息 |
reset ip prefix-list [ prefix-list-name ] |
清除IPv6地址前缀列表的统计信息 |
reset ipv6 prefix-list [ prefix-list-name ] |
· Device A与Device B通信,都运行RIP协议。
· 使能Device A上的RIP协议,配置三条静态路由。
· 设置在引入静态路由时应用路由策略,使三条静态路由部分引入、部分被屏蔽掉——20.1.1.1/32和40.1.1.1/32网段的路由是可见的,30.1.1.1/32网段的路由则被屏蔽。
· 通过在Device B上查看RIP路由表,验证路由策略是否生效。
图1-1 在RIP中引入静态路由时应用路由策略配置举例
(1) 配置Device A
# 配置接口GigabitEthernet1/0和GigabitEthernet2/0的IP地址。
<DeviceA> system-view
[DeviceA] interface gigabitethernet 1/0
[DeviceA-GigabitEthernet1/0] ip address 10.1.1.1 30
[DeviceA-GigabitEthernet1/0] quit
[DeviceA] interface gigabitethernet 2/0
[DeviceA-GigabitEthernet2/0] ip address 11.1.1.1 30
[DeviceA-GigabitEthernet2/0] quit
# 在接口GigabitEthernet1/0下使能RIP。
[DeviceA] interface gigabitethernet 1/0
[DeviceA-GigabitEthernet1/0] rip 1 enable
[DeviceA-GigabitEthernet1/0] quit
# 配置三条静态路由,其下一跳为11.1.1.2,保证静态路由为active状态。
[DeviceA] ip route-static 20.1.1.1 32 11.1.1.2
[DeviceA] ip route-static 30.1.1.1 32 11.1.1.2
[DeviceA] ip route-static 40.1.1.1 32 11.1.1.2
# 配置路由策略。
[DeviceA] ip prefix-list a index 10 permit 30.1.1.1 32
[DeviceA] route-policy static2rip deny node 0
[DeviceA-route-policy-static2rip-0] if-match ip address prefix-list a
[DeviceA-route-policy-static2rip-0] quit
[DeviceA] route-policy static2rip permit node 10
[DeviceA-route-policy-static2rip-10] quit
# 启动RIP协议,同时应用路由策略static2rip对引入的静态路由进行过滤。
[DeviceA] rip
[DeviceA-rip-1] import-route static route-policy static2rip
(2) 配置Device B
# 配置接口GigabitEthernet1/0的IP地址。
<DeviceB> system-view
[DeviceB] interface gigabitethernet 1/0
[DeviceB-GigabitEthernet1/0] ip address 10.1.1.2 30
# 启动RIP协议。
[DeviceB] rip
[DeviceB-rip-1] quit
# 在接口下使能RIP。
[DeviceB] interface gigabitethernet 1/0
[DeviceB-GigabitEthernet1/0] rip 1 enable
[DeviceB-GigabitEthernet1/0] quit
# 查看Device B的RIP路由表。
<Sysname> display ip routing-table
Destinations : 14 Routes : 14
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.0/30 Direct 0 0 10.1.1.2 GE1/0
10.1.1.0/32 Direct 0 0 10.1.1.2 GE1/0
10.1.1.2/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.3/32 Direct 0 0 10.1.1.2 GE1/0
20.0.0.0/8 RIP 100 1 10.1.1.1 GE1/0
40.0.0.0/8 RIP 100 1 10.1.1.1 GE1/0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
· Device A与Device B通信,都运行RIPng协议。
· 使能Device A上的RIPng协议,配置三条静态路由。
· 设置在引入静态路由时应用路由策略,使三条静态路由部分引入、部分被屏蔽掉——20::/32和40::/32网段的路由是可见的,30::/32网段的路由则被屏蔽。
· 通过在Device B上查看RIPng路由表,验证路由策略是否生效。
图1-2 在IPv6路由引入中应用路由策略配置组网图
(1) 配置Device A
# 配置接口GigabitEthernet1/0和GigabitEthernet2/0的IPv6地址。
<DeviceA> system-view
[DeviceA] interface gigabitethernet 1/0
[DeviceA-GigabitEthernet1/0] ipv6 address 10::1 32
[DeviceA-GigabitEthernet1/0] quit
[DeviceA] interface gigabitethernet 2/0
[DeviceA-GigabitEthernet2/0] ipv6 address 11::1 32
[DeviceA-GigabitEthernet2/0] quit
# 在接口GigabitEthernet1/0下使能RIPng。
[DeviceA] interface gigabitethernet 1/0
[DeviceA-GigabitEthernet1/0] ripng 1 enable
[DeviceA-GigabitEthernet1/0] quit
# 配置三条静态路由,其下一跳为11::2,保证静态路由为active状态。
[DeviceA] ipv6 route-static 20:: 32 11::2
[DeviceA] ipv6 route-static 30:: 32 11::2
[DeviceA] ipv6 route-static 40:: 32 11::2
# 配置路由策略。
[DeviceA] ipv6 prefix-list a index 10 permit 30:: 32
[DeviceA] route-policy static2ripng deny node 0
[DeviceA-route-policy-static2ripng-0] if-match ipv6 address prefix-list a
[DeviceA-route-policy-static2ripng-0] quit
[DeviceA] route-policy static2ripng permit node 10
[DeviceA-route-policy-static2ripng-10] quit
# 启动RIPng协议,同时应用路由策略static2ripng对引入的静态路由进行过滤。
[DeviceA] ripng
[DeviceA-ripng-1] import-route static route-policy static2ripng
(2) 配置Device B
# 配置接口GigabitEthernet1/0的IPv6地址。
<DeviceB> system-view
[DeviceB] interface gigabitethernet 1/0
[DeviceB-GigabitEthernet1/0] ipv6 address 10::2 32
# 启动RIPng协议。
[DeviceB] ripng
[DeviceB-ripng-1] quit
# 在接口下使能RIPng。
[DeviceB] interface gigabitethernet 1/0
[DeviceB-GigabitEthernet1/0] ripng 1 enable
[DeviceB-GigabitEthernet1/0] quit
# 查看Device B的RIPng路由表。
[DeviceB] display ripng 1 route
Route Flags: A - Aging, S - Suppressed, G - Garbage-collect, D – Direct
O - Optimal, F - Flush to RIB
----------------------------------------------------------------
Peer FE80::7D58:0:CA03:1 on GigabitEthernet1/0
Destination 20::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 8 secs
Destination 40::/32,
via FE80::7D58:0:CA03:1, cost 1, tag 0, A, 3 secs
Local route
Destination 10::/32,
via ::, cost 0, tag 0, DOF
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!