路由策略提供了routing policy、access-list、aspath-list、community-list和prefix-list五种过滤器供各路由协议引用来进行协议策略规则的制定
和策略相关的五种过滤器
1. 路由策略(routing policy)
用于匹配给定路由信息的某些属性,并在这些条件匹配后对该路由信息的某些属性进行设置。一个routing policy由一组if-match 和apply 子句组成,if-match子句定义匹配准则, 也就是通过当前routing policy所需满足的过滤条件,匹配对象是所给路由信息的一些属性;apply子句指定动作,也就是在满足由if-match 子句指定的过滤条件后所执行的一些配置命令,对路由信息的一些属性进行设置。
2. 访问列表(access-list)访问列表access-list分为标准型的访问列表Standard access-list和扩展型的访问列表extended access-list,应用于路由信息的过滤时,一般使用标准型的访问列表,用户在定义访问列表时指定一个IP地址的网段范围,用于匹配路由信息的目的网段地址或下一跳地址,过滤不符合条件的路由信息。如使用扩展access-list,则只用其源地址匹配域匹配路由信息的目的网段地址域而忽略扩展access list中指定的用于匹配数据包目的地址的IP地址范围。
access-list的定义与检查已经在防火墙的配置中实现,有关的配置请用户参考防火墙配置中的“acl”命令。
3. 前缀列表(prefix-list)前缀列表prefix-list的作用类似于access-list,当用于路由信息过滤时,access-list的命令行会让用户难以理解,因为它用的是包过滤的格式,而prefix-list比它更为灵活和易于为用户理解。在应用于路由信息的过滤时,其匹配对象为路由信息的目的地址信息域;它的另一种应用直接作用于路由器对象(gateway),使本地路由协议只能接收某些特定路由器发布的路由信息,这些路由器的地址必须通过prefix-list的过滤,在这种情况下,prefix-list的匹配对象为路由信息包IP报头的源地址。
一个prefix-list由列表名标识,可以分为几个部分,由sequence-number指定这几个部分的匹配顺序,在每个部分中,用户可以独立指定一个网络前缀形式的匹配范围。在匹配的过程中,不同sequence-number的各个部分之间的关系是“或”的关系,即路由信息依次匹配各个部分,通过prefix-list的某一部分,就意味着通过该prefix-list的过滤。
4. 自治系统路径信息访问列表(aspath-list)自治系统路径信息访问列表aspath-list仅用于BGP协议。BGP协议的路由信息包中,包含一自治系统路径域,在BGP协议交换路由信息的过程中,路由信息经过的自治系统路径会记录在这个域中。aspath-list由aspath-list-number标识,用户在定义aspath-list时指定一个用于匹配路由信息aspath域的aspath的正则表达式。可以使用aspath-list匹配BGP路由信息的自治系统路径域,过滤掉不符合条件的路由信息。对于相同的列表号,用户可以定义多条aspath-list,也即一个列表号代表一组aspath访问列表。 在匹配过程中,访问列表的成员aspath-list-number之间是一种“或”的关系,即路由信息通过这组列表中的一条就意味着通过由该列表号标识的这组aspath列表的过滤。
5. 团体属性列表(community-list)团体属性列表community-list仅用于BGP协议。BGP协议的路由信息包中,包含一个community属性域,用来标识一个团体,实际上是一种根据路由信息包发往的目的地址将其分组的方法,分组之后就可以对整组路由信息进行发布、接收或重分配等操作。团体属性列表是一种基于community信息的访问列表,用于BGP协议,其匹配对象是BGP路由信息的团体属性域。
路由策略与过滤器的关系
路由策略在起作用时,分别作用于路由引入、路由发布和路由接收过程。
在路由引入时,使用的命令为:
import-route protocol [ med med ] [ route-policy policy-name ]
在命令中使用路由策略来匹配和设置满足过滤条件的路由属性,在匹配AS-path时使用AS-path list-number,具体的内容要通过ip as-path acl aspath-list-number命令来设置,团体属性Community的匹配也是一样,要通过ip community-list命令来设置。在匹配IP Address时,可以使用Access-list和Prefix-list。
在路由发布和路由接收时,都可以应用Access-list和Prefix-list来进行路由信息的过滤,另外在路由接收时可以指定只接收特定路由器发送的路由信息。
路由策略的配置
路由策略配置任务列表路由策略的配置可以分为过滤列表的定义和过滤列表的应用两部分,过滤器的应用实际上是一个策略规则的定义过程,通过对过滤器的引用以实现路由过滤的功能。各路由协议通用的策略配置任务列表如下所示:
定义路由策略(routing policy)
定义路由策略的if-match子句
定义路由策略的apply子句
引入其他协议的路由信息
定义地址前缀列表prefix-list
配置路由过滤
定义路由策略(routing policy)
路由策略(routing policy)用于匹配路由信息的某些属性,并在这些属性匹配后执行某些动作。对于一个routing policy,有if-match和apply子句与其配合使用。if-match子句定义匹配准则,也就是需要通过当前routing policy的路由信息所需满足的过滤条件,匹配对象是这条路由信息的一些属性;apply子句指定动作,也就是满足由if-match子句指定的过滤条件后所执行的一些配置命令,对这条路由信息的一些属性进行修改。一个routing policy可以分为几个部分,每个部分都有自己的if-match子句与apply子句,由sequence-number指定这几个部分的匹配顺序。
请在系统视图下进行下列配置。
操作 |
命令 |
定义路由策略节点,进入路由策略视图。 |
route-policy policy-name { permit | deny } { seq-number } |
删除路由策略节点 |
undo route-policy policy-name [ permit | deny ] [seq-number ] |
缺省情况下,未定义路由策略。
permit 指定所定义的路由策略节点的匹配模式为允许模式。当路由项满足该节点的所有if-match子句时被允许通过该节点的过滤并执行该节点的apply子句,如路由项不满足该节点的if-match子句,该路由策略的下一个节点将被测试。
deny 指定所定义的路由策略节点的匹配模式为拒绝模式,当路由项满足该节点的所有if-match子句时被拒绝通过该节点的过滤,并且不会进行下一个节点的测试。
seq-number 标识路由策略中的一个节点,当该路由策略用于路由信息过滤时,seq-number小的节点先被测试。
需要注意的是:不同seq-number各个部分之间的关系是“或”的关系,即路由信息依次匹配各个部分,通过routing policy的某一部分,就意味着通过该routing policy过滤。
定义路由策略的if-match子句
if-match子句定义匹配准则, 也就是需要通过当前routing policy的路由信息所需满足的过滤条件,匹配对象是这条路由信息的一些属性 。
请在路由策略视图下进行下列配置。
操作 |
命令 |
指定Routing policy中匹配路由信息的原AS路径前的AS序号 |
if-match as-path aspath-list-number |
取消Routing policy中匹配的路由信息原AS路径前的AS序号 |
undo if-match as-path |
指定Routing policy中匹配的路由信息BGP团体的属性 |
if-match community { standard-community-list-number [ exact-match ] | extended-community-list-number } |
取消Routing policy中匹配的路由信息BGP团体的属性 |
undo if-match community |
指定Routing policy中匹配的路由信息访问控制列表和前缀列表 |
if-match ip address { acl-number | ip-prefix prefix-list-name } |
取消Routing policy中匹配的路由信息访问控制列表和前缀列表 |
undo if-match ip address [ ip-prefix ] |
指定Routing policy中匹配的接口 |
if-match interface [ type number ] |
取消Routing policy中匹配的接口 |
undo if-match interface |
指定Routing policy中匹配的路由信息的下一跳 |
if-match ip next-hop { acl-number | ip-prefix prefix-list-name } |
取消Routing policy中匹配的路由信息的下一跳 |
undo if-match ip next-hop [ ip-prefix ] |
指定Routing policy中匹配的OSPF路由信息的花费 |
if-match cost cost |
取消Routing policy中匹配的OSPF路由信息的花费 |
undo if-match cost |
指定Routing policy中匹配的OSPF路由信息的标记域的值 |
if-match tag tag-value |
取消Routing policy中匹配的OSPF路由信息的标记域的值 |
undo if-match tag |
指定Routing policy中匹配的路由信息的路由类型 |
if-match route-type { internal | external } |
取消Routing policy中匹配的路由信息的路由类型 |
undo if-match route-type |
缺省情况下,不匹配AS正则表达式、团体列表、接口类型、IP地址范围、metric值、OSPF的标记域与OSPF路由信息的类型。
需要注意的是:
对于一个路由策略节点,在匹配的过程中,同一部分if-match子句之间的关系是“与”的关系,即路由信息必须通过该部分所有if-match子句的匹配才算通过routing policy该部分的过滤,可以执行apply子句的动作。
如不指定if-match子句,则所有路由信息都会通过该节点的过滤。
定义路由策略的apply子句
apply子句指定动作,也就是在满足由if-match 子句指定的过滤条件后所执行的一些配置命令,对这条路由信息的一些属性进行修改。
请在路由策略视图下进行下列配置。
指定Routing policy中原AS路径前的AS序号 |
apply as-path aspath-list-number |
取消设置Routing policy中原AS路径前的AS序号 |
undo apply as-path |
指定Routing policy中设置BGP团体的属性 |
apply community { { [aa:nn ] [ no-export-subconfed ] [ no-advertise ] [ no-export ] } [ additive ] | none | additive } |
取消Routing policy中设置BGP团体的属性 |
undo apply community |
设置BGP路由信息的下一跳地址 |
apply ip next-hop ip-address |
取消设置BGP路由信息的下一跳地址 |
undo apply ip next-hop |
设置BGP路由信息的本地优先级 |
apply local-preference local-preference |
取消设置BGP路由信息的本地优先级 |
undo apply local-preference |
设置路由信息的路由花费 |
apply cost cost |
取消设置路由信息的路由花费 |
undo apply cost |
设置BGP路由信息的路由源 |
apply origin { igp | egp as-number | incomplete } |
取消设置BGP路由信息的路由源 |
undo apply origin |
设置OSPF路由信息的标记域 |
apply tag tag-value |
取消设置OSPF路由信息的标记域 |
undo apply tag |
指定Routing policy中原AS路径前的AS序号 |
apply as-path aspath-list-number |
缺省情况下,不设置AS号、BGP团体属性、下一跳、本地优先级、metric值、origin属性与路由信息标记域。
路由策略的执行规则
一个routing policy可以分为几个部分,每个部分都有自己的if-match子句与apply子句,由sequence-number指定这几个部分的匹配顺序。在匹配的过程中,同一部分if-match子句之间的关系是“与”的关系,即路由信息必须通过该部分所有if-match子句的匹配才算通过routing policy该部分的过滤,可以执行apply子句的动作;不同sequence-number的各个部分之间的关系是“或”的关系,即路由信息依次匹配各个部分,通过routing policy的某一部分,就意味着通过该routing policy的过滤。
引入其他协议路由
路由协议可以通过引入其他协议路由信息的方式来共享对方的路由信息,在引入其他协议路由信息时,可以通过对一个路由策略的引用过滤掉不期望的路由信息,实现有选择的引入。进行引入操作的目的路由协议的路由权值与被引入的源路由协议的路由权值一般不能相互转换,这时就需要为引入的路由指定一个路由权值。
缺省情况下,不引入其它协议的路由信息。目前有关路由的引入有三种方式,分别是在RIP协议视图下,OSPF协议视图下和BGP视图下。下面分别进行介绍:
l import-route(RIP协议配置)
import-route protocol [ cost cost ] [ route-policy route-policy-name ]
protocol 指定可引入的源路由协议,目前可为direct、static、rip、ospf、ospf-ase与bgp。引入的协议是指除本路由协议以外的其它路由协议。
目前,路由策略支持引入如下协议发现的路由:
direct 本机接口直接相连的网段(或主机)路由
Static 静态路由
Rip RIP协议发现的路由
Ospf OSPF协议发现的路由
Ospf-ase OSPF协议发现的外部路由
Bgp BGP协议发现的路由
cost cost: 指定RIP引入路由的cost值。
route-policy policy-name:引入路由时使用的策略
l import-route(OSPF协议配置)
import-route protocol [ cost cost ] [ type 1 | 2 ] [ tag tag-value ] [ route-policy policy-name ]
protocol:指定可引入的源路由协议,目前可为direct、static、rip与bgp。
tag tag-value :是OSPF在引入其它协议路由时,设定引入路由标记域;
type:指定OSFP在引入其它协议路由时的路由类型。type 1为自治系统第一类外部路由,type 2为自治系统第二类外部路由。
l import-route (BGP协议配置)
import-route protocol [ med med ] [ route-policy policy-name ]
protocol:指定可引入的源路由协议,目前可为direct、static、rip、ospf 与ospf ase。
med med:引入外部路由的MED值。
在同时指定了路由策略和metric关键字的情况下,通过路由策略过滤的路由信息将使用该路由策略节点中apply子句指定的路由权值。
定义地址前缀列表
prefix-list-name:指定地址前缀列表名,唯一标识一个地址前缀列表。
index-number:标识地址前缀列表中的一条表项,index-number小的表项先被测试。当不指定index-number时,自动取该地址前缀列表所有表项的最大值加10。
permit:指定所定义的地址前缀列表表项的匹配模式为允许模式。当指定为允许模式并且待过滤的IP地址在该表项指定的前缀范围内时,通过该表项的过滤,如待过滤的IP地址不在该表项指定的前缀范围内,则进行下一表项测试。
deny:指定所定义的地址前缀列表表项的匹配模式为拒绝模式。当指定为拒绝模式并且待过滤的IP地址在该表项指定的前缀范围内时,通不过该表项的过滤,并且不会进行下一个表项的测试。
network/len:指定IP地址前缀范围(IP地址/掩码范围),例如35.0.0.0/8。当指定为0.0.0.0/0时匹配所有IP地址。
ge-value、le-value:指定匹配的地址前缀范围[ ge-value,le-value ]。其取值范围规则为len <= ge-value <=le-value <= 32,当只指定greater-equal时,表示前缀范围[ ge-value,32 ],当只指定less-equal时,表示前缀范围[ len,le-value ]。
需要注意的是:
地址前缀列表用于IP地址的过滤。一个地址前缀列表可以有若干条表项,每一表项指定一个地址前缀范围。表项之间的过滤关系是“或”的关系,即通过一条表项的过滤就意味着通过该地址前缀列表的过滤。若没有通过任一表项的过滤,则通不过该地址前缀列表的过滤。
地址前缀范围有两部分,分别由len与[ greater-equal ge-value ] [ less-equal le-value ]来确定。若两部分前缀范围都被指定,则待过滤的IP必须匹配这两部分的前缀范围。
例如:
[Quidway] ip ip-prefix p1 permit 10.0.192.0/8 greater-equal17 less-equal 18
该条地址前缀列表表项表示,对待过滤IP地址的1~8位和17~18位与指定的IP网段10.0.192.0的1~8位和17~18位进行匹配。
配置路由过滤
在某些情况下,可能要求只发布或引入某些满足条件的路由信息以阻止邻居路由器得知某些路由,可利用路由策略中对地址前缀列表或访问列表的引用来实现对路由信息的过滤。
(1)配置对接收的路由进行过滤
定义一条策略规则,通过对一个访问控制列表或地址前缀列表的引用实现在接收路由过程中对不满足条件的路由信息进行过滤。可以通过gateway关键字指定一个地址前缀列表,过滤信息路由器的地址以实现只接收来自特定邻居路由器的更新报文。
某些情况下,路由协议可能要求忽略所接收到的某些路由信息,可以定义filter-policy,通过对地址前缀列表或访问列表的引用来实现路由信息过滤的目的。
可通过gateway来指定一个地址前缀列表,过滤发布信息路由器的地址以实现只接收来自特定邻居路由器的更新报文的目的。
请在协议视图下进行下列配置。
表1-1 配置对接收的路由信息进行过滤
操作 |
命令 |
配置对接收的指定地址发布的路由信息进行过滤 |
filter-policy gateway prefix-list-name import |
取消对接收的指定地址发布的路由信息进行过滤 |
undo filter-policy gateway prefix-list-name import |
配置对接收的全局路由信息进行过滤 |
filter-policy {acl-number | ip-prefix prefix-list-name } import |
取消对接收的全局路由信息进行过滤 |
undo filter-policy {acl-number | ip-prefix prefix-list-name } import |
配置即对接收的指定地址发布的路由信息进行过滤,又对匹配prefix-list的路由进行过滤 |
filter-policy ip-prefix prefix-list-name gateway prefix-list-name import |
取消对接收到的指定地址发布的路由信息及匹配prefix-list的路由进行过滤 |
undo filter-policy ip-prifix prefix-list-name gateway prefix-list-name import |
举例:
定义RIP协议的路由信息接收过滤规则,凡通过地址前缀列表3过滤的路由信息才会被RIP协议接收。
[Quidway-rip] filter-policy ip-prefix 3 import
(2)配置对发布的路由进行过滤
定义一条策略规则,通过对一个访问控制列表或地址前缀列表的引用实现在路由发布的过程中过滤不满足条件的路由信息,通过指定protocol实现仅过滤发布的protocol的路由信息。
表1-2 配置对发布的路由信息进行过滤
操作 |
命令 |
配置对协议发布路由的过滤 |
filter-policy { acl-number | ip-prefix prefix-list-name } export [ protocol ] |
取消对协议发布路由的过滤 |
undo filter-policy { acl-number | ip-prefix prefix-list-name } export [ protocol ] |
缺省情况下,不对发布的路由信息进行过滤。
protocol指定发布路由信息的协议,目前可包括:direct、static、rip、ospf、ospf-ase和bgp。
举例:
定义RIP协议的路由信息发布过滤规则,只有通过地址前缀列表3过滤的路由信息才会被RIP协议发布。
[Quidway-rip] filter-policy ip-prefix 3 export。
路由策略的监控和维护
(1)显示路由策略
例:[Quidway] display route-policy map1
route-policy : map1
permit 10 : apply aspath prepend 1 10
apply metric 10
apply tag 10000
matched : 0 denied : 0
(2)显示地址访问控制列表信息
例:[Quidway] display acl 100
Using normal packet-filtering access rules now.
100 deny icmp 10.1.0.0 0.0.255.255 any host-redirect(3 matches,252 bytes -- rule 1)
100 permit icmp 10.1.0.0 0.0.255.255 any echo (no matches -- rule 2)
100 deny udp any any eq rip (no matches -- rule 3)
(3)显示名为p1的地址前缀列表的信息
[Quidway] display ip ip-prefix p1
ip-Prefix p1
seq 10: permit 10.0.192.0/8 ge 17 le 18