路由策略和策略路由配置与管理

路由策略和策略路由配置与管理

“路由策略”与“策略路由”之间的区别就在于它们的主体(或者说“作用对象”)不同,前者的主体是“路由”,是对符合条件的路由(主要)通过修改路由属性来执行相应的策略动作(如允许通过、拒绝通过、接收、引入等),使通过这些路由的数据报文按照规定的策略进行转发;而后者的主体是数据报文,是对符合条件的数据报文(如报文的源地址、报文长度等)按照策略规定的动作进行操作(如设置报文的出接口和下一跳、设置报文的缺省出接口和下一跳等),然后转发。“路由策略”如RIP、OSPF、IS-IS、BGP中动态路由信息发送(发布)/接收控制、路由选路、路由引入以及BGP路由属性配置等都用到了“路由策略”。

路由策略基础

路由策略(Routing Policy)是通过使用不同的匹配条件和匹配模式来选择路由,或改变路由属性。路由策略主要应用在路由信息发布、接收、引入和路由属性修改等几个方面:

1、控制路由的发布

可通过路由策略对所要发布的路由信息进行过滤,只允许发布满足条件的路由信息。

2、控制路由的接收

可通过路由策略对所要接收的路由信息进行过滤,只允许接收满足条件的路由信息。这样可以控制路由条目的数量,提高网络的路由效率。

3、控制路由的引入

可通过路由策略只引入满足条件的路由信息,并控制所引入的路由信息的某些属性,使其满足本路由协议的路由属性要求。

4、设置路由的属性

修改通过路由策略过滤的路由的属性,满足自身需要。

一、路由策略原理

要实现路由策略,首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则,这就是路由策略中必须使用的过滤器。可以用路由信息中的不同属性作为过滤器的匹配依据,如路由的目的地址、源地址等。然后将匹配规则应用于路由的发布、接收和引入等过程的策略中。

在一个路由策略中可以包括多组以if-match语句指定的匹配条件,这些匹配条件是以节点(Node)来进行标识的。如果在一个路由策略中包括多个节点,则路由会按照节点号从小到大依次进行匹配,直到与某节点的条件完全匹配(后面的节点就不在去匹配了),如果到了路由策略中所包括的最后一个节点仍没有完全匹配,则该路由拒绝通过。不同节点间是逻辑“或”的关系,即如果通过了其中一个节点,就意味着通过该路由策略,不再对其他节点进行匹配。

每个节点可以由一组if-match和apply字句组成。

①if-match子句定义匹配规则,匹配对象是路由信息的一些属性。同一节点中的不同if-match子句是逻辑“与”的关系,即只有满足节点内所有if-match子句指定的匹配条件,才能通过该节点的匹配测试。

②apply子句指定动作,也就是对通过节点匹配的路由信息进行属性设置。

If-match和apply子句可以根据应用进行设置,但都是可选的。如果只过滤路由,不设置路由的属性,则仅需要配置if-match子句,不需要使用apply子句;如果某个permit节点没有配置任何if-match子句,则该节点匹配所有的路由;通常在多个deny节点后配置一个不含if-match子句和apply子句的permit节点,用于允许其他的路由通过。

如上图,一个路由策略中包含N个节点(Node)。当接收或者发送的路由要应用该路由策略时,会按节点序号从小到大依次检查与各个节点是否匹配。匹配条件由if-match子句定义,涉及路由信息的属性和路由策略的6种过滤器。匹配模式分permit和deny两种。

①permit:表示该路由将被允许通过,并且执行该节点的apply子句对路由信息的一些属性进行设置。

②表示该路由将被拒绝通过。

当路由与某节点的所有if-match子句都匹配成功后,进入匹配模式选择,不再匹配其他节点。当路由与该节点的任意一个if-match子句匹配失败后,进入下一节点。如果该路由与所有节点都匹配失败,则该路由信息将被拒绝通过。

二、路由策略过滤器

路由策略的实现是通过各种过滤器进行路由过滤完成的。在路由策略中,if-match子句中匹配的6种过滤器包括访问控制列表ACL(Access Control List)、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器。这6种过滤器具有各自的匹配条件及permit和deny匹配模式,因此这6种过滤器在以下特定情况下可单独使用,实现路由过滤。

过滤器可看做是路由策略过滤路由的工具,但单独配置的过滤器没有任何过滤效果,只有在路由协议的相关命令中应用这些过滤器,才能达到预期的过滤效果。

1、ACL

ACL是将报文中的入接口、源或目的地址、协议类型、源或目的端口号作为匹配条件的过滤器,在各路由协议发布、接收路由时单独使用。但在路由策略中的if-match子句只支持基本ACL,过滤的是路由的目的IP地址和子网掩码。

2、地址前缀列表

地址前缀列表(IP Prefix List)将路由的目的地址和子网掩码前缀作为匹配条件的过滤器(与ACL过滤器的作用是一样的),可在各路由协议发布和接收路由时单独使用。根据匹配的前缀不同,前缀过滤列表可以进行精确匹配,也可在一定掩码长度范围内匹配。当IP地址为0.0.0.0时表示通配地址,表示掩码长度范围内的所有路由都被Permit或deny。

每个地址前缀列表可以包含多个索引(index),每个索引对应一个节点。路由按索引号从小到大依次检查各个节点是否匹配,任意一个节点匹配成功,将不再检查其他节点。若所有节点都匹配失败,路由信息将被过滤。

3、AS路径过滤器

AS路径过滤器(AS_PathFilter)是将BGP中的AS_Path属性作为匹配条件的过滤器,专用于BGP路由过滤,在BGP发布、接收路由时单独使用。AS_Path属性记录了BGP路由经过的所有AS编号。

4、团体属性过滤器

团体属性过滤器(CommunityFilter)是将BGP中的团体属性作为匹配条件的过滤器,专用于BGP路由过滤,在BGP发布、接收路由时单独使用。BGP的团体属性用来标识一组具有共同性质的路由。

5、扩展团体属性过滤器

扩展团体属性过滤器(ExtcommunityFilter)是将BGP中的扩展团体属性作为匹配条件的过滤器,专用于VPN网络中的BGP路由过滤,可在VPN配置中利用VPNTarget区分路由时单独使用。

目前,扩展团体属性过滤器仅适用于对VPN中的VPN Target属性的匹配。VPNTarget属性在BGP/MPLS IP VPN网络中控制VPN路由信息在各Site之间的发布和接收。

6、RD属性过滤器

RD团体属性过滤器(RouteDistinguisher Filter)是将VPN中的RD属性作为匹配条件的过滤器,可在VPN配置中利用RD属性区分路由时单独使用。

VPN实例通过路由标识符RD实现地址空间独立,区分使用相同地址空间的前缀。

三、路由策略配置任务

在路由策略配置中,主要包括三大配置任务:

①配置要使用的对应过滤器。路由策略过滤器包括ACL、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器,可选择其中的一种或几种。

②(可选)创建一个路由策略,并通过if-match子句调用第一项配置任务中所配置的对应过滤器,定义路由策略所需匹配的条件。如果不配置本步骤,则表示所有路由在对应路由策略节点匹配成功,直接按照节点的匹配模式进行处理。

③(可选)最后可通过apply子句定义路由策略的动作,用来为匹配成功的路由设置对应的路由属性。如果不配置本步骤,则对应路由策略节点仅起过滤路由的作用,不会对通过的路由进行任何属性设置。

3.1配置路由策略过滤器

3.1.1、配置地址前缀列表

当需要根据路由的目的地址控制路由的发布和接收时,可配置地址前缀列表。地址前缀列表可以单独使用,也就是不在路由策略if-match语句中被调用,但这时地址前缀列表中要至少配置一个节点的匹配模式是permit,否则所有路由将都被用于IP地址的过滤。

1、地址前缀列表的配置

配置IPv4地址前缀列表的方法是在系统视图下使用ip ip-prefixip-prefix-name [indexindex-number] {permit |deny}ipv4-address mask-length [match-network][greater-equalgreater-equal-value] [less-equalless-equal-value]命令。

①ip-prefix-name:指定地址前缀列表名称,唯一标识一个IPv4地址前缀列表。

②index-number:可选参数,标识地址前缀列表中的一条匹配条件的索引号,取值范围1~4294967295整数。缺省该序号值按照配置先后顺序依次递增,每次加10,第一个序号值为10,值越小越优先被匹配。同一个名称的地址前缀列表最多可支持配置65535个索引号。

③Permit:二选一选项,指定由参数index-number标识的匹配条件的匹配模式为允许模式。在该模式下,如果过滤的IP地址在定义的范围内,则通过过滤,进行相应的设置;否则,必须进行下一节点的测试。

④deny:二选一选项,指定由参数index-number标识的匹配条件的匹配模式为拒绝模式。在该模式下,如果过滤的IP地址在定义的范围内,则该IP地址不能通过过滤,从而不能进入下一节点的测试;否则,将进行下一节点的测试。

⑤ipv4-addressmask-length:指定用来进行路由匹配的网络IP地址和掩码长度,mask-length的取值范围为0~32.如果将本参数指定为0.0.0.0 0,则代表所有路由。

⑥match-network:可选项,指定匹配网络地址,仅在ipv4-address参数值为0.0.0.0时才可以配置,用来匹配指定网络地址的路由。例如:ip ip-prefix prefix1 permit 0.0.0.0 8可以匹配掩码长度为8的所有路由;而ipip-prefix prefix1 permit 0.0.0.0 8 match-network可以匹配的IP地址在0.0.0.1~0.255.255.255范围内的所有路由。

一般情况下,IP地址的网络ID不能为0.但是华为产品中可以支持网络ID为0,而主机ID不为0的IP地址。这种IP地址需要特殊的系统提供支持,实际上很少使用。

⑦greater-equalgreater-equal-value:可选参数,指定掩码长度可以匹配范围的下限(也即最小长度),取值限制为mask-length≦greater-equal-value≦less-equal-value≦32。如果没有配置less-equal less-equal-value可选参数,则路由的掩码长度范围可在greater-equal-value和32之间。如果同时不配置greater-equalgreater-equal-value和less-equal less-equal-value可选参数,则仅匹配mask-length参数指定的掩码长度路由。

⑧less-equalless-equal-value:可选参数,指定掩码长度匹配范围的上限,取值限制为mask-length≦greater-equal-value≦less-equal-value≦32。如果没有配置greater-equal greater-equal-value可选参数,则掩码长度范围在mask-length和less-equal-value之间。如果同时不配置greater-equalgreater-equal-value和less-equal less-equal-value可选参数,则仅用mask-length作为掩码长度的路由。

如果地址前缀列表中的所有条件都是deny模式,则任何路由都不能通过该过滤列表。这种情况下,建议在多条deny模式的条件后定义一条permit 0.0.0.0 0 less-equal 32条件,允许其他所有IPv4路由信息通过。

缺省情况下,系统中无IPv4地址前缀列表。

配置完后可通过display ipip-prefix [ip-prefix-name]查看IPv4地址前缀列表的详细配置信息;也可通过reset ip ip-prefix [ip-prefix-name]用户视图命令清除IPv4地址前缀列表统计数据。

2、地址前缀列表的应用

地址前缀列表既可以作为过滤器被各种路由协议使用,也可以和路由策略配合使用

①本命令通过与下列命令配合使用,可以以地址前缀列表为过滤条件对全局发布的路由信息进行过滤。

●全局过滤发布的RIP路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name}export [protocol [process-id] |interface-typeinterface-number]

●全局过滤发布的OSPF路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name}export [protocol [process-id]]

●全局过滤发布的IS-IS路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name|route-policyroute-policy-name }export [protocol [process-id]]

●全局过滤发布的BGP路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name}export [protocol [process-id] ]

②本命令通过与下列命令配合使用,可以以地址前缀列表为过滤条件对全局接收的路由信息进行过滤。

●全局过滤接收的RIP路由:filter-policy {acl-number |acl-nameacl-name | ip-prefix ip-prefix-name [gatewayip-prefix-name]}import [interface-typeinterface-number]

●全局过滤接收的OSPF路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name |route-policy route-policy-name [secondary]} import

●全局过滤接收的IS-IS路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name|route-policy route-policy-name} import

●全局过滤接收的BGP路由:filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name} import

③本命令通过与peer {group-name |ipv4-address} ip-prefixip-prefix-name{import |export}命令配合使用,为特定的BGP对等体配置基于地址前缀列表的过滤器进行路由过滤。

④以地址前缀列表为过滤条件控制IS-IS的Level-1路由向Level-2区域进行路由渗透:import-route isis level-1 into level-2 [filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name|route-policyroute-policy-name} |tagtag]*。

⑤以地址前缀列表为过滤条件控制IS-IS的Level-2路由向Level-1区域进行路由渗透:import-route isis level-2 into level-1 [filter-policy {acl-number |acl-nameacl-name |ip-prefix ip-prefix-name|route-policyroute-policy-name} |tagtag]*。

⑥本命令通过与if-matchip-prefix ip-prefix-name命令在路由策略中配合使用,以地址前缀列表为路由匹配的条件,对接收或发送的路由进行测试。

3、地址前缀列表的应用情形

同一个地址前缀列表可包含多个匹配条件,一个条件指定一个地址前缀范围。此时,多个条件之间是“或”的关系,即通过其中任何一个条件就可通过该地址前缀列表的过滤;没有通过任何一个条件的过滤就意味着没有通过该地址前缀的过滤,都将被Deny。

地址前缀范围包括两个部分,分别由mask-length和[greater-equal-value,less-equal-value]决定。如果同时指定了这两部分,则要被过滤的IP地址必须匹配这两部分规定的前缀范围。Ipv4-address参数值为0.0.0.0时表示通配地址。此时不论掩码指定为多少,都表示掩码长度范围内的所有路由全部被permit或deny。

现假设有如下5条路由:1.1.1.1/24、1.1.1.1/32、1.1.1.1/26、2.2.2.2/24和1.1.1.2/16,通过使用以下不同的地址前缀列表,进行过滤的结果不同。

(1)单条件匹配(即地址前缀列表中只有一个匹配条件)

单节点匹配时,根据匹配模式的不同又有以下两种匹配情形:

①Permit模式:假设配置的命令为ipip-prefix aa index 10 permit 1.1.1.1 24,则匹配的结果是路由1.1.1.1/24被Permit,其他都被Deny。

这种情况属于单节点的精确匹配,此时只有路由的目的地址,掩码与地址列表中匹配条件完全相同的路由才会匹配成功,节点的匹配模式为Permit,所以路由1.1.1.1/24被Permit,属于匹配成功并被Permit。其他4条路由由于未匹配成功被Deny。

②Deny模式:如果配置的命令为ipip-prefix aa index 10 deny 1.1.1.1 24,则匹配的结果是本示例所有5条路由全部被Deny。

这种情况依然属于单节点的精确匹配,但节点的匹配模式为deny,所以路由1.1.1.1/24还是被Deny,属于匹配成功但被Deny,其他4条路由则属于未匹配成功被默认Deny。

(2)多条件匹配(即地址前缀列表中有多个节点的匹配条件)

根据所配置的匹配条件的不同,多条件匹配又有如下几种情形。

①多节点:假设地址前缀列表中配置了以下两个节点,则匹配的结果是路由1.1.1.1/24被Deny,路由1.1.1.1/32被Permit,其他3条路由都被Deny。

Ip ip-prefix aaindex 10 deny 1.1.1.1 24

Ip ip-prefix aaindex 20 permit 1.1.1.1 32

这种情况属于多节点的精确匹配,即路由1.1.1.1/24在匹配节点10时,满足匹配条件,但是匹配模式是Deny,所以属于匹配成功但被Deny;而路由1.1.1.1/32在匹配节点10时,不满足匹配条件,则继续匹配节点20,此时匹配成功,且节点20的匹配模式是permit,所以属于匹配成功并被Permit;其他3条由于都不符合节点10和20的条件,属于未匹配成功被默认Deny。

②只指定子网掩码长度和掩码长度上限:假设地址前缀列表配置为ip ip-prefix aa index 10 permit 1.1.1.1 24 less-equal 32,则表示配置结果为greater-equal-value=24、less-equal-value=32,此时的配置结果为路由1.1.1.1/24、1.1.1.1/26、1.1.1.1/32均被Permit,其他2条路由被Deny。

在这种情形中,配置时要注意,各掩码长度参数必须满足以下条件:mask-length≦greater-equal-value≦less-equal-value,否则配置不成功。

③只指定子网掩码长度和掩码长度下限:假设地址前缀列表配置为ip ip-prefix aa index 10 permit 1.1.1.1 24 greater-equal 26,表示配置结果为greater-equal-value=26、less-equal-value=32,此时的匹配结果是路由1.1.1.1/26和1.1.1.1/32这两条路由均被Permit,其他三条被Deny。

④同时指定子网掩码长度、掩码长度下限和掩码长度上限:假设地址前缀列表配置为ip ip-prefix aa index 10 permit 1.1.1.1 24 greater-equal 26less-equal 32,则表示配置结果为greater-equal-value=26、less-equal-value=32,此时的匹配结果为路由1.1.1.1/26和1.1.1.1/32这两条路由均被Permit,其他三条被Deny。

可见如果一个匹配条件中指定了greater-equal-value参数,而less-equal-value参数为最大值32,则与仅指定相同的greater-equal-value参数值(不指定less-equal-value参数)的匹配条件的匹配结果是一样的。

(3)通配地址匹配

在地址前缀列表中,当匹配的路由目的IP地址为0.0.0.0时,代表为通配地址,它又会因为所配置的子网掩码长度参数的不同而有不同的匹配结果。

①只指定子网掩码长度和掩码长度上限

假设地址前缀列表配置为ip ip-prefixaa index 10 permit 0.0.0.0 8 less-equal 32,则表示配置结果为greater-equal-value=8、less-equal-value=32,由于0.0.0.0为通配地址,所以所有掩码长度在8到32之间的路由全部被Permit,即匹配所有掩码长度在8到32之间的路由。最终结果为1.1.1./24、1.1.1.1/26、1.1.1.1/32、2.2.2.2/24和1.1.1.1/16这5条路由均被Permit。

②只指定子网掩码长度和掩码长度下限

假设地址前缀列表中配置了以下两个节点,则表示配置结果为对于节点10,greater-equal-value=24,less-equal-value=32,由于0.0.0.0为通配地址,即所有掩码长度在24到32之间的路由全部被Deny;对于节点20,greater-equal-value=0、less-equal-value=32,由于0.0.0.0为通配地址,所有其他路由全部被Permit。最终的匹配结果为只有路由1.1.1.2/16被Permit,其他4条均被Deny。

Ip ip-prefix aa index 10 deny 0.0.0.0 24 less-equal 32

Ip ip-prefix aaindex 20 permit 0.0.0.0 0 less-equal 32

③多节点匹配

假设地址前缀列表中配置了以下两个节点,则表示配置结果为:对于节点10,符合条件的路由2.2.2.2/24被Deny,对于节点20,其他的4条路由都被Permit。即最终的匹配结果为除路由2.2.2.2/24外的其他路由被Permit。

Ip ip-prefix aaindex 10 deny 2.2.2.2 24

Ip ip-prefix aaindex 20 permit 0.0.0.0 0 less-equal 32

示例1:配置名为p1的地址前缀列表,只允许10.0.192.0/8网段内,掩码长度在17~18之间的路由通过

system-view

[Huawei]ipip-prefix p1 permit 10.0.192.0 8 greater-equal 17 less-equal 18

示例2:配置名为p3的地址前缀列表,拒绝0.0.0.1~0.255.255.255范围内的所有路由通过,允许其他路由通过

system-view

[Huawei]ip ip-prefix p3 index 10 deny 0.0.0.0 8 match-network

[Huawei]ip ip-prefix p3 index 20 permit 0.0.0.0 0 less-equal 32

示例3:配置名为abc的地址前缀列表,仅过滤掉10.1.0.0/16、10.2.0.0/16、10.3.0.0/16三个网段的路由,而其他网段的路由信息可以通过。

system-view

[Huawei]ip ip-prefix abc index 10 deny 10.1.0.0 16

[Huawei]ip ip-prefix abc index 20 deny 10.2.0.0 16

[Huawei]ip ip-prefix abc index 30 deny 10.3.0.0 16

[Huawei]ip ip-prefix abc index 40 permit 0.0.0.0 0 less-equal 32

3.1.2、配置AS路径过滤器

AS路径过滤器是利用BGP路由携带的AS-Path列表对路由进行过滤。在不希望接收某些AS的路由时,可以利用AS路径过滤器对携带这些AS号的路由进行过滤。当网络环境比较复杂时,如果利用ACL或地址前缀列表过滤BGP路由,则需要定义多个ACL或前缀列表,配置繁琐。这时可使用AS路径过滤器。

1、AS路径过滤器配置

在BGP中配置AS路径过滤器的方法是在系统视图下配置ip as-path-filter {as-path-filter-number|as-path-filter-name} {deny | permit}regular-expression命令。

①as-path-filter-number:二选一参数,指定AS路径过滤器号,取值范围为1~256的整数。

②as-path-filter-name:二选一参数,指定AS路径过滤器名称,1~51个字符,区分大小写,不支持空格,且不能都是数字。

③deny:二选一参数,指定AS路径过滤器的匹配模式为拒绝模式。

④permit:二选一参数,指定AS路径过滤器的匹配模式为允许模式。

⑤regular-expression:指定用于过滤AS路径的正则表达式,为1~255个字符。如:^200.*100$,表示匹配所有以AS200开始、以AS100结束的AS路径域。

通过display ipas-path-filter [as-path-filter-number | as-path-filter-name]命令查看已配置的AS路径过滤器信息。

本命令配置的AS路径过滤器可以在peer {group-name |ipv4-address}as-path-filter{as-path-filter-number| as-path-filter-name}{import |export}命令中直接被调用,应用于路由过滤,游客在路由策略中作为if-match as-path-filter命令的过滤条件。

在AS路径过滤器中,AS路径过滤器号(名称)相同的本命令之间是“与”的关系,也就是必须同时匹配同一名称的AS路径过滤器中的所有条件才算最终匹配。而在同一个AS路径过滤器编号下,可以定义多条规则(Permit或Deny)。

2、正则表达式

正则表达式描述了一种字符串匹配的模式。

一些常用的AS路径正则表达式

①^$:表示匹配的字符串为空,即AS_PATH为空,表示只匹配本地路由。

②.*:表示匹配任意字符串,即AS_PATH为任意,表示匹配所有路由。

③^100:表示匹配的字符串开始为100,即AS_PATH最左边AS前3位(最后一个AS)为100,后面可能还有AS,表示匹配由AS100发来的所有路由,包括从AS100始发和由AS100转发的路由。

100_:表示匹配的字符串开始为100,后面为符号,即AS_PATH最左边AS(最后一个AS)为100,后面一定还有其他AS,表示匹配由AS100转发(路径中至少有两个AS)的路由。比较前一个表达式100可看出,“_”可以和用来限制仅匹配由某AS转发的路由。

⑤_100$:表示匹配的字符串最后为100,即AS_PATH最右边AS(起始AS)为100,表示匹配AS100始发的路由。

⑥_100_:表示匹配的字符串中间有100,即AS_PATH中间有AS100,表示匹配经过AS100,且在AS路径中,AS100既不是第一个AS,也不是最后一个AS的路由。

示例1:创建序号为1的AS路径过滤器,允许AS路径中以10开始的路由通过。

system-view

[Huawei]ipas-path filter 1 permit ^10

示例2:创建序号为2的AS路径过滤器,允许AS路径中包含20的路由通过。

system-view

[Huawei]ipas-path filter2 permit [20]

示例3:创建序号为3的AS路径过滤器,不允许AS路径中包含30的路由通过。

system-view

[Huawei]ipas-path filter 3 deny [30]

[Huawei]ipas-path-filter 3 permit .*

3.1.3、配置团体属性过滤器

团体属性可以标识具有相同特征(如来自或经过同一个或多个AS,具有相同的MED属性,具有相同有本地优先级属性等)的路由,而不用考虑零散路由前缀和繁多的AS号。团体属性过滤器与团体属性配合使用,可以在不使用地址前缀列表和AS属性过滤器时降低路由管理难度。

团体属性过滤器有两种类型:基本团体属性过滤器和高级团体属性过滤器。基本团体属性过滤器是对已配置的团体路由成员根据其中的路由的团体属性类型进行路由过滤,属于粗放型过滤器;而高级团体属性过滤器是通过正则表达式对符合团体属性过滤条件的路由进行过滤,比基本团体属性过滤器匹配团体属性更灵活。

基本团体属性过滤器的配置方法是在系统视图下使用ip community-filter {basiccomm-filter-name |basic-comm-filter-num}{permit |deny} [community-number |aa:nn |internet |no-export-subconfed |no-advertise| no-export]&<1-20>命令进行的。

高级团体属性过滤器的配置方法是在系统视图下使用ip community-filter {advanced comm-filter-name | adv-comm-filter-num}{permit | deny} regular-expression命令进行的。

参数和选项说明:

1)basiccomm-filter-name:二选一参数,指定所配置的基本团体属性过滤器名称。

2)basic-comm-filter-num:二选一参数,指定基本团体属性过滤器号,1~99。

3)advancedcomm-filter-name:二选一参数,指定高级团体属性过滤器名称。

4)adv-comm-filter-num:二选一参数,指定高级团体属性过滤器号,100~199。

5)deny:二选一参数,指定团体属性过滤器的匹配模式为拒绝模式。

6)permit:二选一参数,指定团体属性过滤器的匹配模式为允许模式。

7)community-number:多选一参数,指定要过滤路由的整数形式团体号(需要事先创建对应的团体属性),取值范围为0~4294967295的整数。一条命令最多可以指定20个团体号(与后面配置的选项类型有关),包括冒号分隔形式配置的aa:nn团体号。

8)aa:nn:多选一参数,指定要过滤路由的冒号分隔形式团体号,aa和nn都是整数形式,取值范围均为0~65535。一条命令最多可以指定20个团体号。在配置团体号时要注意以下几个方面:

●如果不配置internet、no-export-subconfed、no-advertise和no-export选项,则community-number和aa:nn一共可以指定20个。

●如果配置internet、no-export-subconfed、no-advertise和no-export中的一个选项,则community-number和aa:nn一共可以指定19个。

●如果配置internet、no-export-subconfed、no-advertise和no-export中的两个选项,则community-number和aa:nn一共可以指定18个。

●如果配置internet、no-export-subconfed、no-advertise和no-export中的三个选项,则community-number和aa:nn一共可以指定17个。

●如果配置internet、no-export-subconfed、no-advertise和no-export选项,则community-number和aa:nn一共可以指定16个。

9)internet:多选一选项,指定要过滤指定团体号中internet类型团体属性的路由,这是预定义的团体属性。缺省情况下,所有的路由都具有internet类型团体属性,可以被通告给所有的BGP对等体。

10)no-advertise:多选一选项,指定要过滤指定团体号中no-advertise类型团体属性的路由,具有此属性的路由在收到后,不能被通告给任何其他的BGP对等体。

11)no-export:多选一选项,指定要过滤指定团体号中no-export类型团体属性的路由,具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。

12)no-export-subconfed:多选一选项,指定要过滤指定团体号中no-export-subconfed类型团体属性的路由,具有此属性的路由在收到后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

13)regular-expression:指定用于路由过滤的团体属性正则表达式名称。

配置后可通过display ipcommunity-filter [basic-comm-filter-num | adv-comm-filter-num | comm.-filter-name]查看已配置团体属性过滤器信息。

示例1:配置团体号为1的基本团体属性过滤器,允许internet类型团体属性的BGP路由信息通过。

system-view

[Huawei]ipcommunity-filter 1 permit internet

示例2:配置团体号为100的高级团体属性过滤器,允许团体属性值(为整数形式,或者aa:nn形式)以“10”开头的路由信息通过。

system-view

[Huawei]ipcommunity-filter 100 permit ^10

3.2 配置路由策略

路由策略用来根据路由信息的某些属性过滤路由信息,并改变与路由策略规则匹配的路由信息的属性。要配置路由策略,首先要创建一个路由策略,然后创建策略中的具体节点(一个路由策略可以包括多个节点)。一个节点下可以配置以下子句配置路由策略匹配条件和操作动作(一个路由策略中可以包含多个匹配条件和操作动作)。

①if-match子句:定义节点匹配规则,即路由信息通过当前路由策略所需满足的条件,匹配对象是路由信息的某些属性。

②apply子句:指定路由策略动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些属性配置动作,对路由的某些属性进行修改。

在配置路由策略之前,需要先配置过滤列表和对应的路由协议,并事先规划好路由策略的名称、节点序号、匹配条件以及要修改的路由属性值。

3.2.1、创建路由策略

一个路由策略可以包括多个节点,每一节点由一些if-match子句和apply子句组成。If-match子句定义该节点的匹配规则,apply子句定义通过该节点过滤后进行的动作。但路由策略节点之间的过滤关系是“或”的关系,即通过一个节点的过滤就意味着通过该路由策略的过滤。若没有通过任何一个节点的过滤,则表示没有通过该路由策略的过滤。所以在一个路由策略中,至少有一个节点的匹配模式是permit,否则所有路由将都被禁止通过。

路由策略的创建方法是在系统视图下使用route-policyroute-policy-name {permit |deny}nodenode命令即可。

①route-policy-name:指定要创建的路由策略的名称,用来唯一标识一个路由策略,为1~40个字符的字符集,区分大小写。如该名称的路由策略不存在,则创建一个新的路由策略并进入它的Route-Policy视图;如果已经存在,则直接进入它的Route-Policy视图。

②permit:二选一选项,指定所定义的路由策略节点的匹配模式为允许模式。当路由满足该节点的所有if-match子句时才被允许通过,并执行该节点的apply子句;如果路由项不满足该节点下任何一个if-match子句,将继续测试该路由策略的下一个节点。

③deny:二选一选项,指定所定义的路由策略节点的匹配模式为拒绝模式。当路由满足该节点的所有if-match子句时将被拒绝通过;如果路由不满足该节点下任何一个if-match子句,将继续测试该路由策略的下一个节点。

④node node:标识路由策略中的一个节点号,节点号小的进行匹配,取值范围为0~65535的整数。当一个节点匹配成功后,该路由将不再匹配其他节点。当全部节点匹配失败后,该路由将被过滤,不允许通过。

为便于区分不同的路由策略,可在路由策略视图下通过description text命令配置描述信息。

示例:创建一个名为policy1的路由策略,其节点序列号为10,匹配模式为permit,并进入路由策略视图。

system-view

[Huawei]route-policypolicy1 permit node 10

[Huawei-route-policy]

3.2.2、配置if-match子句

If-match子句是路由策略中用来匹配条件的子句,它可根据多种路由属性来进行匹配,如路由的目的IP地址、路由标记、路由下一跳、路由源IP地址、路由出接口】路由开销、路由类型、BGP路由的团体属性、BGP路由的扩展团体属性、BGP路由的AS路径属性等。

If-match子句命令是并列关系,没有严格的先后次序。在同一路由策略节点下配置了多个if-match子句,则各if-match子句之间是逻辑“与”关系,即必须与该节点下的所有if-match子句匹配成功。对于同一个路由策略节点,if-match acl命令和if-match ip-prefix命令不能同时配置,且后配置的命令会覆盖先配置的命令。

3.2.3、配置apply子句

Apply子句用来为路由策略指定动作,用来设置匹配成功的路由的属性。在一个节点中,如果没有配置apply子句,则该节点仅起过滤路由的作用。如果配置一个或多个apply子句,则通过节点匹配的路由将执行所有apply子句。

3.2.4、配置路由策略生效时间

为了保障网络的稳定性,修改路由策略时可以控制路由策略的生效时间。

配置后路由策略后,可通过displayroute-policy [route-policy-name]查看路由策略的详细配置信息。

3.2.5、AS_Path过滤器配置示例

如上拓扑,RouterA与RouterB、RouterB与RouterC之间建立EBGP连接。希望AS10的设备和AS30的设备无法相互通信。

1、基本配置思路

除需要进行基本的BGP功能配置(配置EBGP对等体以及引入直连路由)外,还需要在RouterB上配置一个AS_Path过滤器。可采用如下思路配置BGP的AS_Path过滤器,使AS20不向AS10发布AS30的路由,也不向AS30发布AS10的路由。

2、具体配置步骤

①配置各接口的IP。

system-view

[RouterA]interface gigabitethernet 2/0/0

[RouterA-GigabitEthernet2/0/0]ip address200.1.2.1 24

②配置各路由器的EBGP对等体连接,同时引入直连路由,以使它们彼此三层互通。A、B、C的路由器ID分别设为1.1.1.1、2.2.2.2、3.3.3.3。

配置后,通过display bgp routing-table查看各处的BGP路由表。

RouterB发布给RouterC的BGP路由表如上,RouterB除发布自己引入的直连路由和从RouterC学习到的直连路由外,还向RouterC发布了AS10引入的直连路由9.1.1.0/24。

RouterC通过RouterB学习到了9.1.1.0/24这条路由。

③在RouterB上配置AS_Path过滤器,并在RouterB的出方向上应用该过滤器。

首先创建编号为1的AS_Path过滤器,拒绝包含AS号30的路由通过(正则表达式“30”表示任何包含AS30的AS列表,“.*”表示与任何字符匹配)。

此时在通过display bgp routing-table查看RouterB发往AS30的发布路由表,可看到表中没有RouterB发布的AS10引入的直连路由:

RouterC的BGP路由表里也没有这些路由:

查看RouterB发往AS10的发布路由表,表中没有RouterB发布的AS30引入的直连路由:

同样RouterA的BGP路由表中也没有这些路由:

3.2.6、接收和发布路由过滤的配置示例

如上拓扑,在运行OSPF协议的网络中,RouterA从Internet网络接收路由,并为OSPF网络提供了Internet路由。现要求OSPF网络只能访问172.1.17.0/24、172.1.18.0/24、172.1.19.0/24三个网段的网络,其中RouterC连接的网络只能访问172.1.18.0/24网段的网络。

1、基本配置思路

可利用IP地址列表过滤器对发布和接收的路由进行过滤

①在RouterA上配置过滤策略,使其在路由发布时仅提供172.1.17.0/24、172.1.18.0/24、172.1.19.0/24路由给RouterB,使得OSPF网络只能访问172.1.17.0/24、172.1.18.0/24、172.1.19.0/24三个网段的网络。

②在RouterC上配置过滤策略,使其在进行路由引入时仅接收172.1.18.0/24路由,使得RouterC连接的网络只能访问172.1.18.0/24。

2、具体配置步骤

①配置各路由器的接口IP。

system-view

[RouterB]interface gigabitethernet 1/0/0

[RouterB-GigabitEthernet1/0/0]ip address 192.168.1.224

[RouterB-GigabitEthernet1/0/0]quit

[RouterB]interface gigabitethernet 2/0/0

[RouterB-GigabitEthernet2/0/0]ip address192.168.3.1 24

[RouterB-GigabitEthernet2/0/0]quit

[RouterB]interface gigabitethernet 3/0/0

[RouterB-GigabitEthernet3/0/0]ip address192.168.2.1 24

[RouterB-GigabitEthernet3/0/0]quit

②配置OSPF网络中各路由器的OSPF基本功能,使彼此三层互通。因为位于一个区域中,所以只能采用骨干区域0进行配置,进程号为缺省的1。

③在RouterA上配置5条静态路由,并将这些静态路由引入OSPF协议中。这里的5条静态路由均为黑洞(出接口为NULL0)静态路由。

在RouterB上通过display ip routing-table查看IP路由表,可见OSPF成功引入了5条静态路由:

④配置路由发布过滤策略。首先在RouterA上配置IP地址前缀列表a2b,仅允许172.1.17.0/24、172.1.18.0/24、172.1.19.0/24三个网段的路由通过。

[RouterA]ip ip-prefix a2b index 10 permit172.1.17.0 24

[RouterA]ip ip-prefix a2b index 10 permit172.1.18.0 24

[RouterA]ip ip-prefix a2b index 10 permit172.1.19.0 24

然后在RouterA上创建一个IP地址前缀列表过滤器,调用前面创建的IP地址前缀列表a2b对发布的静态路由进行过滤。

[RouterA]ospf

[RouterA-ospf-1]filter-policy ip-prefix a2bexport static

此时在RouterB上通过display ip routing-table查看IP路由表,可见仅接收3条路由:

⑤配置路由接收过滤策略。在RouterC上配置一个IP地址前缀列表in,仅允许接收172.1.18.0/24的路由。

[RouterC]ip ip-prefix in index 10 permit 172.1.18.024

在RouterC上配置接收策略,引用地址前缀列表in进行过滤:

[RouterC]ospf

[RouterC-ospf-1]filter-policy ip-prefix inimport

在RouterC上通过display ip routing-table查看IP路由表,仅接收了in中定义的1条路由:

而RouterD的本地IP路由表接收了RouterB发送的所有路由:

但通过display ospf routing查看RouterC的OSPF路由表时,可以看到OSPF路由表中仍然接收了IP地址列表a2b中所定义的全部3条路由。因为filter-policy import命令用于过滤从协议路由表加入本地IP路由表的路由,不过滤加入协议路由表中的路由。

3.2.7、在路由引入时应用路由策略的配置示例

如上拓扑,RouterB与RouterA之间通过OSPF协议交换路由信息,与RouterC之间通过IS-IS协议交换路由信息。要求在RouterB上将IS-IS网络中路由引入OSPF网络,172.17.1.0/24路由的选路优先级较低;172.17.2.0/24路由具有标记,以便以后运用路由策略。

1、基本配置思路

采用路由策略对引入的路由进行控制

①在RouterB上配置路由策略,将172.17.1.0/24的路由开销设置为100(路由的缺省开销值为0),并在OSPF引入IS-IS路由时应用路由策略,使得OSPF网络中172.17.1.0/24路由的选路优先级较低;将172.17.2.0/24的路由的Tag属性设置为20,使得路由172.17.2.0/24具有标识,方便下面应用路由策略。

②在RouterB上配置路由策略,将172.17.2.0/24的路由的tag属性设置为20,并在OSPF引入IS-IS路由时应用路由策略,使得路由172.17.2.0/24具有标识,方便以后运用路由策略。

2、具体配置步骤

①配置各路由器的接口IP

system-view

[RouterB]interface gigabitethernet 1/0/0

[RouterB-GigabitEthernet1/0/0]ip address192.168.1.2 24

[RouterB-GigabitEthernet1/0/0]quit

[RouterB]interface gigabitethernet 2/0/0

[RouterB-GigabitEthernet2/0/0]ip address192.168.2.2 24

[RouterB-GigabitEthernet2/0/0]quit

②在RouterC和RouterB上配置IS-IS协议基本功能,假设区域ID为10,各自的SystemID分别为0000.0000.0001和0000.0000.0002。因为本例IS-IS网络中只有一个区域,所以它们均只能作为骨干路由器,即Level-2路由器。

③在RouterA和RouterB上配置OSPF协议基本功能,并配置RouterB引入IS-IS路由。同样由于只有一个区域,只能采用骨干区域0。

在RouterA上通过display ospf routing查看OSPF路由表,可看到由RouterB引入并通告的IS-IS路由:

④在RouterB上配置基本ACL(也可采用IP地址前缀列表)的过滤,仅允许172.17.2.0/24路由信息通过,用于下面在路由策略中为该路由配置路由标记。

[RouterB]aclnumber 2002

[RouterB-basic-2002]rulepermit source 172.17.2.0 0.0.0.255

[RouterB-basic-2002]quit

配置名为prefix-a的IP地址前缀列表(也可采用基本ACL过滤),仅允许172.17.1.0/24路由信息通过,用于路由策略中为该路由重新配置路由开销值。

[RouterB]ipip-prefix prefix-a index 10 permit 172.17.1.0 24

创建一条路由策略,并分别调用前面配置的ACL和IP地址前缀列表,为172.17.2.0/24路由信息打上标记号20,为172.17.1.0/24路由信息设置路由开销值为100,降低它的优先级。

加入的节点30的策略项没有if-match和apply子句,节点30不是可有可无的。因为在路由策略中,是按照路由策略各节点从小到大依次进行匹配的,如果没有30这个节点策略,则凡是不与节点10和节点20的策略匹配的所引入的IS-IS路由都将被拒绝通过。这显然与示例要求不符,所以必须加上节点30,直接让其他引入的IS-IS路由通过,但不做属性修改。

⑤配置RouterB在路由引入时应用前面创建的路由策略

[RouterB]ospf

[RouterB-ospf-1]import-route isis 1route-policy isis2ospf

[RouterB-ospf-1]quit

此时在RouterA上查看OSPF路由表,从中看到目的地址为172.17.1.0/24的路由开销值为100,目的地址为172.17.2.0/24的路由标记域(Tag)为20,其他路由属性未发生变化。

posted @ 2022-02-26 09:10  michaelni  阅读(2429)  评论(0编辑  收藏  举报