分类: 系统运维
2011-10-20 11:01:34
要启用PBR,你必须创建一个路由映射,然后指定匹配的条件,以及当所有条件都满足后所执行的行为。然后你必须在路由器的特定接口上启用PBR。这样所有到达这个接口的包,如果与路由映射中的条件匹配,将使用PBR进行包路由转发。具体的配置步骤如表7-14所示(自全局配置模式开始)。其中多个步骤列出了多个可用的命令,要根据实际需要来选择。具体命令使用方法将在本节后面介绍。
【注意】配置步骤中的许多命令不仅用于本节所介绍的策略路由,还可应用于路由重新发布过程中。为了使大家对这些命令的作用有一个全面了解,在下面的命令介绍中将同时介绍这些命令在重新发布路由中的应用和示例。
表7-14 在接口上启用PBR的配置步骤
步骤 |
|
|
|
|
|
Step 2 |
Router(config-route-map)# match ip address {access-list-number | name} [...access-list-number | name] |
IP地址 |
Step 3 |
Router(config-route-map)# set ip precedence [number | name]
或 Router(config-route-map)# set ip next-hop recursive ip-address [... ip-address]
Router(config-route-map)# set interface interface-type interface-number [... type number]
Router(config-route-map)# set ip default next-hop ip-address [... ip-address] 或 Router(config-route-map)# set default interface interface-type interface-number [... type ...number] |
match命令所设置的条件后所执行的行为。 |
Step 4 |
Router(config-route-map)# interface interface-type interface-number |
指定要启用PBR的接口,进入接口配置模式 |
|
|
指定策略路由中所使用的路由映射。一个接口仅可使用一个路由映射标记,但你可以有多个路由映射条目,每个映射条目有一个序列号。匹配时是按照序列号进行的,直到找到第一个匹配的路由映射条目。如果在该接口上接收的包中没有找到一个匹配的路由映射条目,则按照普通路由方式进行转发该接口上接收的包 |
1. route-map命令
“route-map map-tag [permit | deny] [sequence-number]”全局配置模式命令用来定义从一个路由协议重新发布路由到另一个路由协议,或者启用策略路由的条件。它需要与本节后面将要介绍的match路由映射配置模式命令和set路由映射配置模式命令一起来使用。可用“no route-map map-tag [permit | deny] [sequence-number]”命令删除所配置的映射条目。命令中的可选项和参数说明如表7-15所示。
表7-15 route-map命令可选项和参数说明
可选项和参数 |
说明 |
map-tag |
路由映射名称。路由器配置模式命令redistribute使用这个名称来调用路由映射。多个路由映射可以共享一个相同的路由映射名。 |
permit |
(可选)如果与路由映射所指定的条件,并且选择了该关键字,则重新发布该路由。在策略路由中,则表明这些包将被策略路由。 如果没有与路由映射匹配的条件,但选择了该关键字,则将测试下一个同名的路由映射。如果与所有路由映射条件都不匹配,则不重新发布该路由。 |
deny |
(如选)如果与路由映射指定的条件匹配,并且选择了该关键字,则路由不重新被发布。在策略路由中,则该包不被策略路由,也不再检查同名的其他路由映射了。如果包没有被策略路由,则使用普通的路由方式转发。 |
sequence-number |
(可选)指定在相同名称的路由映射列表中,新路由映射所在的位置,也就是第几个路由映射。在上面的no格式该命令中,则会删除对应的路由映射。 |
使用route-map命令可以重新发布路由,或者使包使用策略路由,为了使大家对这个命令的作用有一个比较全面的了解,下面分别进行介绍。
1)在重新发布(Redistribution)路由方面的应用
使用全局配置模式命令route-map和match,以及set路由器配置模式命令,来定义重新发布路由的条件。每个route-map命令有一个关联的match和set命令的列表。match命令指定允许匹配的条件,在这个条件下确定当前route-map命令中的哪个路由重新发布是允许的。set命令指定匹配了命令指定的条件所采取的设置行为,也就是具体要执行的重新发布行为。“no route-map”命令用来删除路由映射。
match路由映射配置命令有多个格式。这些match命令可以按任何次序排列,必须满足所有match命令指定的条件才使路由按照set命令所给定的设置行为进行路由重新发布。no格式的命令可以用来删除指定的匹配条件。
当你想在详细控制在路由进程间如何重新发布路由时就需要使用路由映射。目标路由协议是你用全局配置模式命令router指定的。源路由器是你用路由器配置模式命令redistribute指定的。
2)在策略路由(Policy Routing)方面的应用
路由映射的另一个用途就是此处所介绍的启用策略路由。使用ip policy route-map或者ipv6 policy route-map命令、route-map、match和set命令来定义策略路由包的条件。match命令指定哪个策略路由将发生的条件,set命令指定如果匹配了match命令所指定的条件后将执行的路由行为。
如果配置了不带参数的“no route-map map-tag”命令,则整个路由映射将被删除。
以下示例是重新发布跳数为1的RIP路由到OSPF路由进程中。这些路由将被重新发布到OSPF路由进程中,作为度量为5,度量类型为Type 1,标记名为1的外部LSA被通告。命令中的“match metric”、“set metric”、“set metric-type”和“ set tag”命令将在本节后介绍。
Router(config)# router ospf 109
Router(config-router)# redistribute rip route-map rip-to-ospf
Router(config-router)# exit
Router(config)# route-map rip-to-ospf permit
Router(config-route-map)# match metric 1 !---匹配的条件是度量为1的RIP路由
Router(config-route-map)# set metric 5 !---路由重新发布后的路由度量为5
Router(config-route-map)# set metric-type type1 !--- 路由重新发布后的度量类型为Type 1
Router(config-route-map)# set tag 1 !--- 路由重新发布后的标记为为1
以下示例是重新发布跳数为1的EIGRP路由,新的EIGRP路由作为度量值为5,标记值为1的外部路由被通告。
Router(config)# router eigrp virtual-name1
Router(config-router)# address-family ipv4 autonomous-system 4453
Router(config-router-af)# topology base
Router(config-router-af-topology)# redistribute eigrp 6473 route-map
virtual-name1-to-virtual-name2
Router(config-router-af-topology)# exit-address-topology
Router(config-router-af)# exit-address-family
Router(config-router)# router eigrp virtual-name2
Router(config-router)# address-family ipv4 autonomous-system 6473
Router(config-router-af)# topology base
Router(config-router-af-topology)# exit-af-topology
Router(config-router-af)# exit-address-family
Router(config)# route-map virtual-name1-to-virtual-name2
Router(config-route-map)# match tag 42
Router(config-route-map)# set metric 5
Router(config-route-map)# set tag 1
2. match length命令
“match length minimum-length maximum-length”路由映射配置模式命令根据包长度进行策略路由,是根据包长度设置启用策略路由的条件。你可能想要按照包长度进行基于策略的路由,以便你的交互通信和批量通信导向到不同路由器上。要删除这条策略路由条目,可使用“no match length minimum-length maximum-length”命令。命令中的两个参数说明如下:
minimum-length:包的最小包长度,取值范围为0~0x7FFFFFFF。
maximum-length:包的最大包长度,取值范围为0~0x7FFFFFFF。
在IPv4 PBR(策略路由)中,使用ip policy route-map接口配置命令,route-map全局配置模式命令,以及match和set路由映射配置模式命令来一起定义策略路由包的条件。ip policy route-map命令定义一个路由映射,每个route-map命令有一个关联的match和set命令列表:match命令指定匹配的条件,在此条件下将发生策略路由;set命令指定设置行为,在符合match命令所设置的条件后将强制执行的路由行为。
在IPv6 PBR中,使用ipv6 policy route-map或者ipv6 local policy route-map命令来定义策略路由包的条件。
在IPv4中,match路由映射配置命令有多种格式,可以以任一顺序排列,而且必须满足所有match命令所设置的条件才能使包按照在set命令中参数给定的值执行路由。可使用no格式的match命令来删除指定的匹配条件条目。
在以下示例中,在s0接口上接收到的长度在3~200字节的包将被路由到FDDI 0接口上。
interface serial 0
ip policy route-map interactive
!
route-map interactive
match length 3 200
set interface fddi 0
在以下示例中,在e0接口上接收到的长度在3~200字节的IPv6包将被路由到FDDI 0接口上。
interface Ethernet0/0
ipv6 policy-route-map interactive
!
route-map interactive
match length 3 200
set interface fddi 0
3. match ip address命令
“match ip address {access-list-number [access-list-number... | access-list-name...] | access-list-name [access-list-number...| access-list-name] | prefix-list prefix-list-name [prefix-list-name...]}”路由映射配置模式命令用来重新发布任何由标准ACL、扩展ACL或者前缀列表许可的,具有目的网络地址的路由,或者用来执行基于包的策略路由。由此可见,它也可同时应用于路由的重新发布和策略路由两个方面。可使用“no match ip address {access-list-number [access-list-number... | access-list-name...] | access-list-name [access-list-number...| access-list-name] | prefix-list prefix-list-name [prefix-list-name...]}”命令删除原来所配置的该条目。命令中的可选项和参数说明如下:
access-list-number...:用于匹配条件的标准ACL号,取值范围为1~199。可以以空格方式列出多个用于匹配条件的标准ACL。
access-list-name... :用于匹配条件的标准或者扩展ACL名称,取值范围为1~199。可以以空格方式列出多个用于匹配条件的标准或者扩展ACL。
prefix-list:指定基于前缀列表发布路由。
prefix-list-name... :指定用于发布路由的前缀列表名称。可以以空格方式列出多个用于限制路由发布前缀列表。
当你正在通过一个路由映射传递路由时,一个路由映射可以有几个包含指定match命令所设置条件的部分。任何不符合与一个route-map命令相关联的match命令所设置的条件的路由都将被忽略。也就是说,这样的路由将不被出站路由映射通告,也不被入站路由映射所接受。如果你要编辑仅一些数据,你必须配置另外一个带有指定匹配条件的路由映射。
路由映射的另一个用途就是启用策略路由,所以“match ip address”命令还可允许你基于与扩展ACL条件(例如,一个协议、一个协议服务,源或者目的IP地址)的匹配进行策略路由。要定义策略路由包的条件,可使用“ip policy route-map”接口配置模式命令,另外还需要route-map全局配置模式命令,match和set路由映射配置模式命令。这些在本节前面介绍其他命令时已有介绍,在此不再赘述。
以下示例是设置当路由具有在ACL 5或者ACL 80列表中的地址时,就满足条件。
route-map name
match ip address 5 80
使用地址前缀的路由映射可以被用于路由过滤、默认路由发起、以其他路由协议重新发布路由等。以下示例是设置当路由表中存在10.1.1.0/24地址前缀时,就发起一条默认路由0.0.0.0/0。
ip prefix-list cond permit 10.1.1.0/24
!
route-map default-condition permit 10
match ip address prefix-list cond
!
router rip
default-information originate route-map default-condition
!
在以下策略路由示例中,是当包中具有ACL 6或者ACL 25中的地址时将被路由到E0接口上。
interface serial 0
ip policy route-map chicago
!
route-map chicago
match ip address 6 25
set interface ethernet 0
4. set ip precedence命令
“set ip precedence [number | name]”路由映射配置命令用来在IP协议头中设置一个优先位(可用IP号或者IP名表示)。这是对符合策略路由条件的包执行的行为设置命令。参数“number | name”用来指定在IP包头设置优先级位的IP号或IP名,IP号或者IP名的取值如表7-16所示。要使包的优先级不被改变,则可以使用“no set ip precedence”命令。
表7-16 “number | name”参数的取值
IP号 |
IP名 |
0 |
routine(设置例程优先) |
1 |
priority(设置优先级优先) |
2 |
immediate(设置直接优先) |
3 |
flash(设置闪存优先) |
4 |
flash-override(设置闪存覆盖优先) |
|
critical(设置关键优先) |
|
internet(设置网间控制优先) |
|
network(设置网络控制优先) |
你可以使用IP号,或者对应的IP名来设置优先级。一旦IP优先级位设置,其他QoS服务,如WFQ(weighted fair queueing,加权公平队列)和WRED(Weighted Random Early Detection,加权随机先期检测)都将按照设置运行。
以下示例设置符合路由映射匹配条件的包的IP优先级为5(对应的IP名为critical,也就是以关键性作为优先的条件)。
interface serial 0
ip policy route-map texas
route-map texas
match length 68 128
set ip precedence 5
5. set ip next-hop命令
“set ip next-hop {ip-address [...ip-address] | recursive ip-address}”路由映射配置模式命令指示满足策略路由所用的一个路由映射所设置的条件的包将向哪里输出,也就是设置在满足条件后所执行的行为。要删除该条目,则可用“no set ip next-hop ip-address [...ip-address]”命令。两命令中的可选项和参数说明如下:
ip-address:指定满足条件的包输出的下一跳地址(第一跳),它必须是邻接路由器的地址,可以配置多个不同的下一跳地址,以空格分隔。
recursive ip-address:指定包输出的递归下一跳地址(第二跳),也就是在参数ip-address所指定的下一跳地址后面的下一跳地址。
如果在命令中指定的第一个下一跳地址所关联的接口处于关闭状态,则轮流使用后面配置的其他下一跳地址。
【注意】set ip next-hop和下面将要介绍的set ip default next-hop命令类似,但是有不同的操作次序。配置set ip next-hop命令会引起系统首先使用策略路由,然后使用路由表。配置set ip default next-hop命令会使系统首先使用路由表,而后再使用指定下一跳的策略路由。
以下示例,长度在3~50字节的包将输出到IP地址为10.14.2.2的路由器上。
interface serial 0
ip policy route-map thataway !---创建一个名为thataway的路由映射策略
!
route-map thataway
match length 3 50
set ip next-hop 10.14.2.2
以下示例是设置IP地址10.3.3.3为递归下一跳地址。
route-map map_recurse
set ip next-hop recursive 10.3.3.3
6. set interface命令
“set interface type number [...type number]”路由映射配置模式命令指示与策略路由所用的一个路由映射设置条件匹配的包将被转发到哪里,也是设置在满足条件后所执行的行为。要删除该条目可使用“no set interface type number [...type number]”命令。命令中的参数“type number”用来指定满足条件的包要转发的接口的接口类型和接口号。可以指定多个接口,中间以空格分隔。如果指定的第一个接口关闭了,则轮流使用后面指定的接口。
如果指定的是“set interface null 0”命令,则总是把包转发到空接口,并进行丢弃处理,产生不可达消息。
在Cisco IOS 12.(33)SRB和以后版本中,在PBR包通过Cisco 7600系列路由器的TE(traffic engineering,通信引擎)隧道接口发送时引入了硬交换技术。当使用set interface命令在一个策略中配置一个TE隧道接口时,包将在硬件中进行处理。在以前的IOS版本中,通过TE隧道发送的PBR包将首先路由处理器软件进行快速交换(是一种软交换技术)。
Examples
以下示例是把长度在3~50字节的Level 3包转发到E0接口上。
interface serial 0
ip policy route-map testing
!
route-map testing
match length 3 50
set interface ethernet 0
7. set ip default next-hop命令
“set ip default next-hop ip-address [...ip-address]”路由映射配置模式命令指示匹配策略路由所使用的一个路由映射所设置条件,并且在IOS系统没有到达指定目的的显式路由的包将输出到哪里。可使用“no set ip default next-hop ip-address [...ip-address]”命令删除该条目。参数ip-address用来指定包将转发的下一跳地址,必须是邻接路由器的IP地址。可以配置多个下一跳址,之间用空格分隔。
以下示例提供了两个到达不同ISP的等价访问源,在async 1接口上从源10.1.1.1的接收到的包将发送到IP地址为172.16.6.6的路由器(在包中没有显示到达目的地址的路由情况下);而从源10.2.2.2接收到的包将发送到IP地址为172.17.7.7的路由器(在包中没有显示到达目的地址的路由情况下)。所有其他没有到达目的地址的显示出路由的包将被丢弃。
access-list 1 permit ip 10.1.1.1 0.0.0.0
access-list 2 permit ip 10.2.2.2 0.0.0.0
!
interface async 1
ip policy route-map equal-access
!
route-map equal-access permit 10
match ip address 1
set ip default next-hop 172.16.6.6
route-map equal-access permit 20
match ip address 2
set ip default next-hop 172.17.7.7
route-map equal-access permit 30
set default interface null0
8. set default interface命令
“set default interface type number [...type number]”路由映射配置模式命令指示匹配策略路由所使用的一个路由映射所设置条件,并且在IOS系统没有到达指定目的的显式路由的包将输出到哪里。可使用“no set default interface type number [...type number]”命令删除该条目。参数“type number”用来指定包将输出的接口。可以配置多个接口,之间用空格分隔。
以下示例是设置长度在3~50个字节的Level 3包,在路由表没有到达目的地址的显示路由情况下输出到E0接口上。
interface serial 0
ip policy route-map brighton
!
route-map brighton
match length 3 50
set default interface ethernet 0
9. ip policy route-map命令
“ip policy route-map map-tag”接口配置模式命令用来标识在一个接口上使用策略路由时所用的路由映射。参数map-tag用来指定在策略路由中所使用的路由映射名称。它必须与在route-map命令中所指定的路由映射名称一样。可用“no ip policy route-map”命令禁止接口上的策略路由。
以下示例设置的是发送目的地址为172.21.16.18的包到IP地址为172.30.3.20的路由器上。
interface serial 0
ip policy route-map policy_marketing
!
route-map policy_marketing
match ip address 172.21.16.18
set ip next-hop 172.30.3.20