07-路由策略配置
本章节下载: 07-路由策略配置 (187.3 KB)
目 录
下表列出了本章所包含的内容。
如果您需要…… |
请阅读…… |
了解IP路由策略的基本原理和概念 |
|
了解IP路由策略的配置任务及配置过程 |
|
显示配置后IP路由策略的运行情况 |
|
了解IP路由策略典型配置 |
|
检测和排除IP路由策略的运行故障 |
& 说明:
l 在以下路由协议的介绍中所指的路由器及路由器图标,代表了一般意义下的路由器以及运行了路由协议的S9500系列路由交换机。为提高可读性,在手册的描述中将不另行说明。
l 有关VPN实例的命令及参数介绍,请参见《MPLS VPN分册》。
路由器在发布与接收路由信息时,可能需要实施一些策略,以便对路由信息进行过滤,比如只接收或发布一部分满足给定条件的路由信息;一种路由协议(如RIP)可能需要引入(Import)其它的路由协议(如OSPF)发现的路由信息,从而丰富自己的路由知识;路由器在引入其它路由协议的路由信息时,可能需要只引入一部分满足条件的路由信息,并对所引入的路由信息的某些属性进行设置,以使其满足本协议的要求。
为实现路由策略,首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则,可以以路由信息中的不同属性作为匹配依据进行设置,如目的地址、发布路由信息的路由器地址等。匹配规则设置完成后,再应用到路由的发布、接收和引入等过程的路由策略中。
匹配规则可以使用多种过滤器定义,在H3C S9500系列路由交换机中,提供了Route-policy、ACL、As-path、Community-list和Ip-prefix五种过滤器供路由协议引用:
在S9500系列路由交换机中,访问控制列表分为以下几类:
l 基于数字标识的基本访问控制列表
l 基于名字标识的基本访问控制列表
l 基于数字标识的高级访问控制列表
l 基于名字标识的高级访问控制列表
l 基于数字标识的二层访问控制列表
l 基于名字标识的二层访问控制列表
在对路由信息过滤时,一般使用基本访问列表——用户在定义访问列表时指定一个IP地址或子网的范围,用于匹配路由信息的目的网段地址或下一跳地址。如使用高级访问列表,则使用指定的源地址范围进行匹配。
前缀列表Ip-prefix的作用类似于ACL,但比它更为灵活,且更易于为用户理解——Ip-prefix在应用于路由信息的过滤时,其匹配对象为路由信息的目的地址信息域。
一个Ip-prefix由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个Index-number来标识,index-number指明了在Ip-prefix中进行匹配检查的顺序。
在匹配的过程中,路由器按升序依次检查由Index-number标识的各个表项,只要有某一表项满足条件,就意味着通过该Ip-prefix的过滤(不会进入下一个表项的测试)。
自治系统路径信息访问列表As-path仅用于BGP。BGP的路由信息包中,包含有一自治系统路径域(在BGP交换路由信息的过程中,路由信息经过的自治系统路径会记录在这个域中)。As-path就是针对自治系统路径域进行匹配。
团体属性列表community-list仅用于BGP。BGP的路由信息包中,包含一个community属性域,用来标识一个团体。community-list就是针对团体属性域进行匹配。
路由策略主要有两种应用方式:
l 路由协议在发布或接收路由信息时,通过路由策略对信息进行过滤,只接收或发布满足给定条件的路由信息;
l 路由协议在引入其它路由协议发现的路由时,通过路由策略只引入满足条件的路由信息。
(1) 过滤器的配置包括:
l 配置地址前缀列表
l 配置AS路径列表
l 配置团体属性列表
& 说明:
访问控制列表(ACL)的配置请参考《Qos/ACL分册》中的“ACL操作”部分。
(2) 应用路由策略包括:
一个Route-policy可由多个节点构成,每个节点是进行匹配检查的一个单元,节点间依据顺序号sequence-number标识检查顺序。
每个节点包括一组if-match子句和apply子句:
l if-match子句定义匹配规则。同一节点中的不同if-match子句是“与”的关系,即,只有满足节点内所有if-match子句的匹配条件,才能通过该节点。
l apply子句定义通过匹配测试后所执行的动作,即设置路由信息的属性。
请在系统视图下进行下列配置。
操作 |
命令 |
进入路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
删除指定的Route-policy |
undo route-policy route-policy-name [ permit | deny | node node-number ] |
permit指定所定义的Route-policy节点的匹配模式为允许模式。当路由项满足该节点的所有if-match子句时,认为通过该节点的过滤,并执行该节点的apply子句,不进入下一个节点的测试;如路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
deny指定所定义的Route-policy节点的匹配模式为拒绝模式(此模式下apply子句不会被执行),当路由项满足该节点的所有if-match子句时被拒绝通过该节点,不进入下一个节点的测试;如路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
不同节点间是“或”的关系,即路由器依次检查Route-policy的各个节点,通过Route-policy的某一节点,就意味着通过该Route-policy过滤。
缺省情况下,未定义Route-policy。
需要注意:如果定义了一个以上的Route-policy节点,Route-policy的各个节点中至少应该有一个节点的匹配模式是permit。当一个Route-policy用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该Route-policy。当Route-policy的所有节点都是deny模式时,所有路由信息都不会通过该Route-policy。
if-match子句定义匹配准则, 也就是路由信息通过当前Route-policy所需满足的过滤条件,匹配对象是路由信息的一些属性。
请在路由策略视图下进行下列配置。
操作 |
命令 |
匹配BGP路由信息的AS路径域 |
if-match as-path acl-number |
取消匹配BGP路由信息的AS路径域 |
undo if-match as-path |
匹配BGP路由信息的团体属性 |
if-match community { basic-community-number [ whole-match ] | adv-community-number } |
取消匹配BGP路由团体属性 |
undo if-match community |
匹配路由信息的目的地址 |
if-match { acl acl-number | ip-prefix ip-prefix-name } |
取消匹配路由信息的目的地址 |
undo if-match { acl | ip-prefix } |
匹配路由信息下一跳接口 |
|
取消匹配路由信息下一跳接口 |
undo if-match interface |
匹配路由信息的下一跳 |
if-match ip next-hop { acl acl-number | ip-prefix ip-prefix-name } |
取消用ACL匹配路由信息的下一跳 |
undo if-match ip next-hop |
取消用地址前缀列表匹配路由信息的下一跳 |
undo if-match ip next-hop ip-prefix |
匹配路由信息的路由权值 |
if-match cost value |
取消匹配路由信息的路由权值 |
undo if-match cost |
匹配OSPF路由信息的标记域 |
if-match tag value |
取消匹配OSPF路由的标记域 |
undo if-match tag |
& 说明:
命令if-match mpls-label、if-match vpn-target请详见《MPLS/VPN分册》中的“MPLS-L3VPN命令”模块。
缺省情况下,不进行任何匹配。
需要注意:
l 对于同一个Route-policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有match才算满足节点的匹配,可以执行apply子句的动作。
l 如不指定if-match子句,则所有路由信息都会通过该节点的过滤。
apply子句指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的一些属性进行修改。
请在路由策略视图下进行下列配置。
操作 |
命令 |
在BGP路由信息的As-path系列前加入指定的AS号 |
apply as-path as-number-1 [ as-number-2 [ as-number-3 ... ] ] |
取消在BGP路由信息的As-path系列前加入指定的AS号的设置 |
undo apply as-path |
在BGP路由信息中设置团体属性 |
apply community [ aa:nn ]* [ [ no-export-subconfed | no-export | no-advertise ] * [ additive ] | additive | none ] |
取消所设置的BGP路由信息中的团体属性 |
undo apply community |
设置BGP扩展团体属性 |
apply extcommunity { rt { as-number : nn | ip-address : nn } [ additive ] }&<1-16> |
取消所设置的BGP扩展团体属性 |
undo apply extcommunity |
设置路由信息的下一跳地址 |
apply ip next-hop ip-address |
取消路由信息的下一跳地址 |
undo apply ip next-hop |
设置引入路由到IS-IS的级别:Level-1、Level-2还是Level-1-2 |
apply isis [ level-1 | level-2 | level-1-2 ] |
取消引入路由到IS-IS的级别 |
undo apply isis |
设置BGP路由信息的本地优先级 |
apply local-preference local-preference-value |
取消BGP路由信息的本地优先级 |
undo apply local-preference |
设置路由信息的路由权值 |
|
取消路由信息的路由权值 |
undo apply cost |
设置路由信息的路由权类型 |
apply cost-type [ internal | external ] |
取消路由信息的路由权类型 |
undo apply cost-type |
设置BGP路由信息的路由源 |
apply origin { igp | egp as-number | incomplete } |
取消BGP路由信息的路由源 |
undo apply origin |
设置OSPF路由信息的标记域 |
apply tag value |
取消OSPF路由信息的标记域 |
undo apply tag |
& 说明:
命令apply mpls-label请详见《MPLS/VPN分册》中“MPLS-L3VPN命令”模块。
缺省情况下,不进行任何设置。
请注意:如果满足Route-policy中指定的匹配条件,并且在向EBGP同伴通告IGP路由时通告了apply cost-type internal配置的MED值,那么该值将作为IGP路由的MED值。用apply cost-type internal所配置的优先级低于apply cost命令,高于default med命令。
一个Ip-prefix由前缀列表名标识。每个前缀列表可以包含多个表项,每个表项可以独立指定一个网络前缀形式的匹配范围,并用一个index-number来标识,index-number指明了在Ip-prefix中进行匹配检查的顺序。
请在系统视图下进行下列配置。
操作 |
命令 |
定义地址前缀列表 |
ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } network len [ greater-equal greater-equal | less-equal less-equal ] |
取消地址前缀列表 |
undo ip ip-prefix ip-prefix-name [ index index-number | permit | deny ] |
在匹配的过程中,路由器按升序依次检查由index-number标识的各个表项,只要有某一表项满足条件,就意味着通过该Ip-prefix的过滤(不会进入下一个表项的测试)。
需要注意的是:如果定义了一个以上的前缀列表表项,那么至少应该有一个表项的匹配模式是permit模式。deny模式的表项可以先被定义以快速的过滤掉不符合条件的路由信息,但如果所有表项都是deny模式,则任何路由都不会通过该地址前缀列表的过滤。可以在定义了多条deny模式的表项后定义一条permit 0.0.0.0/0 greater-equal 0 less-equal 32的表项以允许其它所有路由信息通过。
BGP的路由信息包中,包含一个自治系统路径域。可以使用ACL匹配BGP路由信息的自治系统路径域,过滤掉不符合条件的路由信息。
请在系统视图下进行下列配置。
表1-5 配置AS路径列表
操作 |
命令 |
配置AS路径列表 |
ip as-path-acl acl-number { permit | deny } as-regular-expression |
删除配置的AS路径列表 |
undo ip as-path-acl acl-number |
缺省情况下,没有定义AS路径列表。
在BGP中,团体属性是可选过渡属性,某些团体属性是公认的,具有全球意义,一般称为标准的团体属性,某些则是用于特殊用途,用户也可以定义扩展的团体属性。
一条路由可以有一个以上的团体属性。一条路由中多个团体属性的发言者可按照一个、几个或全部属性行动。路由器在传递路由到其它对等体之前可以选择是否改变团体属性。
团体属性列表用于标识团体信息,分为基本团体访问列表(basic-community-list)和高级团体访问列表(advanced-community-list),前者的取值范围为1~99,后者的取值范围为100~199。
请在系统视图下进行下列配置。
操作 |
命令 |
配置基本团体属性列表 |
ip community-list basic-comm-list-number { permit | deny } [ aa:nn ]* [ internet | no-export-subconfed | no-advertise | no-export ]* |
配置高级团体属性列表 |
ip community-list adv-comm-list-number { permit | deny } comm-regular-expression |
删除团体属性列表 |
undo ip community-list { basic-comm-list-number | adv-comm-list-number } |
缺省情况下,未配置BGP团体属性列表。
路由协议可以引入其它路由协议发现的路由来丰富自己的路由知识。在引入其它协议路由信息时,可以通过Route-policy来进行路由信息的过滤,实现有选择的引入。进行引入操作的目标路由协议如果不能直接引用源路由协议的路由权值,需要为引入的路由指定一个路由权以满足本协议的要求。
& 说明:
在不同的路由协议视图下,对应的引入其它协议的路由命令有所区别,具体情况请分别参见命令手册中相应路由协议的import-route命令。
请在路由协议视图下进行下列配置。
定义一条策略规则,通过对一个ACL或地址前缀列表的引用实现在接收路由过程中对不满足条件的路由信息进行过滤。gateway指定只接收来自特定邻居路由器的更新报文。
操作 |
命令 |
配置对接收的指定地址发布的路由信息进行过滤 |
filter-policy gateway ip-prefix-name import |
取消对接收的指定地址发布的路由信息进行过滤 |
undo filter-policy gateway ip-prefix-name import |
配置对接收的全局路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name [ gateway ip-prefix-name] } import |
取消对接收的全局路由信息进行过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name [ gateway ip-prefix-name] } import |
定义一条有关路由发布的策略规则,通过对一个ACL或地址前缀列表的引用实现在路由发布的过程中过滤不满足条件的路由信息,通过指定routing-protocol实现仅过滤发布的routing-protocol的路由信息。
请在路由协议视图下进行下列配置。
操作 |
命令 |
配置对协议发布路由的过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ routing-protocol ] |
取消对协议发布路由的过滤 |
undo filter-policy { acl-number | ip-prefix ip-prefix-name } export [ routing-protocol ] |
目前,路由策略支持将如下协议发现的路由接收到路由表中:
direct、static、rip、ospf、ospf-ase、ospf-nssa、isis、bgp以及nat。
缺省情况下,不对接收与发布的路由进行过滤。
& 说明:
命令filter-policy对空规则默认为全部Deny。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IP路由策略的运行情况,用户可以通过查看显示信息验证配置的效果。
操作 |
命令 |
显示Route-policy |
display route-policy [ route-policy-name ] |
显示BGP AS路径列表信息 |
display ip as-path-acl [ acl-number ] |
显示地址前缀列表信息 |
display ip ip-prefix [ ip-prefix-name ] |
l Switch A与Switch B通信,运行OSPF协议。Switch A的Router ID为1.1.1.1,SwitchB的Router ID为2.2.2.2。
l 对Switch A上的OSPF路由进程进行配置,引入三条静态路由。
l 通过在Switch B上配置路由过滤规则,使接收到的三条静态路由部分可见、部分被屏蔽掉——20.0.0.0和40.0.0.0网段的路由是可见的,30.0.0.0网段的路由则被屏蔽。
(1) 配置Switch A
# 配置接口的IP地址。
[Switch A] interface vlan-interface 100
[Switch A-Vlan-interface100] ip address 10.0.0.1 255.0.0.0
[Switch A] interface vlan-interface 200
[Switch A-Vlan-interface200] ip address 12.0.0.1 255.0.0.0
# 配置三条静态路由。
[Switch A] ip route-static 20.0.0.1 255.0.0.0 12.0.0.2
[Switch A] ip route-static 30.0.0.1 255.0.0.0 12.0.0.2
[Switch A] ip route-static 40.0.0.1 255.0.0.0 12.0.0.2
# 启动OSPF协议,指定该接口所属区域号。
[Switch A] router id 1.1.1.1
[Switch A] ospf
[Switch A-ospf-1] area 0
[Switch A-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
# 引入静态路由。
[Switch A-ospf-1] import-route static
(2) 配置Switch B
# 配置接口的IP地址:
[Switch B] interface vlan-interface 100
[Switch B-Vlan-interface100] ip address 10.0.0.2 255.0.0.0
# 配置访问列表。
[Switch B] acl number 2000
[Switch B-acl-basic-2000] rule deny source 30.0.0.0 0.255.255.255
[Switch B-acl-basic-2000] rule permit source any
# 启动OSPF协议,指定该接口所属区域号。
[Switch B] router id 2.2.2.2
[Switch B] ospf
[Switch B-ospf-1] area 0
[Switch B-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
# 配置OSPF对接收的外部路由进行过滤。
[Switch B-ospf-1] filter-policy 2000 import
故障一:路由协议运行正常的情况下无法实现路由信息过滤
故障排除:检查如下几种错误:
l Route-policy的各个节点中至少应该有一个节点的匹配模式是permit模式。当一个Route-policy用于路由信息过滤时,如果某路由信息没有通过任一节点的过滤,则认为该路由信息没有通过该Route-policy的过滤。当Route-policy的所有节点都是deny模式时,所有路由信息都不会通过该Route-policy的过滤。
l 地址前缀列表的各个表项中至少应该有一个表项的匹配模式是permit模式。deny模式的表项可以先被定义以快速的过滤掉不符合条件的路由信息,但如果所有表项都是deny模式,则任何路由都不会通过该地址前缀列表的过滤。可以在定义了多条deny模式的表项后定义一条permit 0.0.0.0 0 less-equal 32的表项以允许其它所有路由信息通过(如果不指定less-equal 32将只匹配缺省路由)。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!