![e54f47ce1608ae961079310bd5eb1f76.png](https://img-blog.csdnimg.cn/img_convert/e54f47ce1608ae961079310bd5eb1f76.png)
路由策略简介
介绍路由策略的定义、由来和作用。
定义
路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。
目的
路由协议在发布、接收和引入路由信息时,根据实际组网需求实施一些策略,以便对路由信息进行过滤和改变路由信息的属性,如:
· 控制路由的接收和发布
只发布和接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。
· 控制路由的引入
在一种路由协议在引入其它路由协议发现的路由信息丰富自己的路由信息时,只引入一部分满足条件的路由信息。
· 设置特定路由的属性
修改通过路由策略过滤的路由的属性,满足自身需要。
受益
路由策略具有以下价值:
· 通过控制路由器的路由表规模,节约系统资源。
· 通过控制路由的接收、发布和引入,提高网络安全性。
· 通过修改路由属性,对网络数据流量进行合理规划,提高网络性能。
基本原理
介绍路由策略的实现原理。
路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性。在特定的场景中,路由策略的6种过滤器也能单独使用,实现路由过滤。若设备支持BGP to IGP功能,还能在IGP引入BGP路由时,使用BGP私有属性作为匹配条件。
路由策略原理
图1 路由策略原理图
![2e515ace4e50c363f8f3edd06a27c859.png](https://img-blog.csdnimg.cn/img_convert/2e515ace4e50c363f8f3edd06a27c859.png)
如图1,一个路由策略中包含N(N>=1)个节点(Node)。路由进入路由策略后,按节点序号从小到大依次检查各个节点是否匹配。匹配条件由If-match子句定义,涉及路由信息的属性和路由策略的6种过滤器。
当路由与该节点的所有If-match子句都匹配成功后,进入匹配模式选择,不再匹配其他节点。匹配模式分permit和deny两种:
· permit:路由将被允许通过,并且执行该节点的Apply子句对路由信息的一些属性进行设置。
· deny:路由将被拒绝通过。
当路由与该节点的任意一个If-match子句匹配失败后,进入下一节点。如果和所有节点都匹配失败,路由信息将被拒绝通过。
过滤器
路由策略中If-match子句中匹配的6种过滤器包括访问控制列表ACL(Access Control List)、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器。这6种过滤器具有各自的匹配条件和匹配模式,因此这6种过滤器在以下的特定情况中可以单独使用,实现路由过滤。
ACL
ACL是将报文中的入接口、源或目的地址、协议类型、源或目的端口号作为匹配条件的过滤器,在各路由协议发布、接收路由时单独使用。在Route-Policy的If-match子句中只支持基本ACL。
ACL还可以在除路由策略的其他场景使用,详细描述请参见《安全配置-ACL配置》中的“原理描述”。
地址前缀列表(IP Prefix List)
地址前缀列表将源地址、目的地址和下一跳的地址前缀作为匹配条件的过滤器,可在各路由协议发布和接收路由时单独使用。
每个地址前缀列表可以包含多个索引(index),每个索引对应一个节点。路由按索引号从小到大依次检查各个节点是否匹配,任意一个节点匹配成功,将不再检查其他节点。若所有节点都匹配失败,路由信息将被过滤。
根据匹配的前缀不同,前缀过滤列表可以进行精确匹配,也可以进行在一定掩码长度范围内匹配。
说明:
当IP地址为0.0.0.0时表示通配地址,表示掩码长度范围内的所有路由都被Permit或Deny。
AS路径过滤器(AS_Path Filter)
AS路径过滤器是将BGP中的AS_Path属性作为匹配条件的过滤器,在BGP发布、接收路由时单独使用。
AS_Path属性记录了BGP路由所经过的所有AS编号。AS_Path属性的详细描述请参见《IP路由配置-BGP配置》中的“原理描述-BGP基本概念”。
团体属性过滤器(Community Filter)
团体属性过滤器是将BGP中的团体属性作为匹配条件的过滤器,在BGP发布、接收路由时单独使用。
BGP的团体属性是用来标识一组具有共同性质的路由。团体属性的详细描述请参见《IP路由配置-BGP配置》中的“原理描述-BGP基本概念”。
扩展团体属性过滤器(Extcommunity Filter)
扩展团体属性过滤器是将BGP中的扩展团体属性作为匹配条件的过滤器,可在VPN配置中利用VPN Target区分路由时单独使用。
RD属性过滤器(Route Distinguisher Filter)
RD团体属性过滤器是将VPN中的RD属性作为匹配条件的过滤器,可在VPN配置中利用RD属性区分路由时单独使用。
BGP to IGP功能
BGP to IGP功能使IGP能够识别BGP路由的Community、Extcommunity、AS-Path等私有属性。
在IGP引入BGP路由时,可以应用路由策略。只有当设备支持BGP to IGP功能时,路由策略中才可以使用BGP私有属性作为匹配条件。如果设备不支持BGP to IGP功能,那么IGP就不能够识别BGP路由的私有属性,将导致匹配条件失效。
对接收和发布的路由进行过滤示例
组网需求
如图1所示,运行OSPF协议的网络中,SwitchA从Internet网络接收路由,并为OSPF网络提供了Internet路由。用户希望OSPF网络中只能访问172.16.17.0/24、172.16.18.0/24和172.16.19.0/24三个网段的网络,其中SwitchC连接的网络只能访问172.16.18.0/24网段的网络。
图1 配置对接收和发布的路由过滤组网图
![db877bf5f376b63b613e22e810c9f722.png](https://img-blog.csdnimg.cn/img_convert/db877bf5f376b63b613e22e810c9f722.png)
![96d5b96982ccbaea63e9c9023688ab19.png](https://img-blog.csdnimg.cn/img_convert/96d5b96982ccbaea63e9c9023688ab19.png)
配置思路
采用如下的思路配置对路由进行过滤:
1. 在SwitchA上配置路由策略,在路由发布时运用路由策略,使SwitchA仅提供路由172.16.17.0/24、172.16.18.0/24、172.16.19.0/24给SwitchB,实现OSPF网络中只能访问172.16.17.0/24、172.16.18.0/24和172.16.19.0/24三个网段的网络。
2. 在SwitchC上配置路由策略,在路由引入时运用路由策略,使SwitchC仅接收路由172.16.18.0/24,实现SwitchC连接的网络只能访问172.16.18.0/24网段的网络。
操作步骤
1. 配置各接口所属的VLAN
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] vlan batch 10
[SwitchA] interface gigabitethernet 0/0/1
[SwitchA-GigabitEthernet0/0/1] port link-type trunk
[SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10
[SwitchA-GigabitEthernet0/0/1] quit
2. 配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
[SwitchA] interface vlanif 10
[SwitchA-Vlanif10] ip address 192.168.1.1 24
[SwitchA-Vlanif10] quit
3. 配置OSPF基本功能
# SwitchA的配置。
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# SwitchB的配置。
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# SwitchC的配置。
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit4. 在SwitchA配置5条静态路由,并在将这些静态路由引入到OSPF协议中
[SwitchA] ip route-static 172.16.16.0 24 NULL 0
[SwitchA] ip route-static 172.16.17.0 24 NULL 0
[SwitchA] ip route-static 172.16.18.0 24 NULL 0
[SwitchA] ip route-static 172.16.19.0 24 NULL 0
[SwitchA] ip route-static 172.16.20.0 24 NULL 0
[SwitchA] ospf
[SwitchA-ospf-1] import-route static
[SwitchA-ospf-1] quit
# 在SwitchB查看IP路由表,可以看到OSPF引入的5条静态路由。
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.16.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.17.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.18.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.19.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.20.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
192.168.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10
192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
192.168.2.0/24 Direct 0 0 D 192.168.2.1 Vlanif20
192.168.2.1/32 Direct 0 0 D 127.0.0.1 Vlanif20
5. 配置路由发布策略
# 在SwitchA配置地址前缀列表a2b。
[SwitchA] ip ip-prefix a2b index 10 permit 172.16.17.0 24
[SwitchA] ip ip-prefix a2b index 20 permit 172.16.18.0 24
[SwitchA] ip ip-prefix a2b index 30 permit 172.16.19.0 24
# 在SwitchA配置发布策略,引用地址前缀列表a2b进行过滤。
[SwitchA] ospf
[SwitchA-ospf-1] filter-policy ip-prefix a2b export static
# 在SwitchB查看IP路由表,可以看到SwitchB仅接收到列表a2b中定义的3条路由。
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.17.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.18.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.19.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
192.168.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10
192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
192.168.2.0/24 Direct 0 0 D 192.168.2.1 Vlanif20
192.168.2.1/32 Direct 0 0 D 127.0.0.1 Vlanif20
6. 配置路由接收策略
# 在SwitchC配置地址前缀列表in。
[SwitchC] ip ip-prefix in index 10 permit 172.16.18.0 24
# 在SwitchC配置接收策略,引用地址前缀列表in进行过滤。
[SwitchC] ospf
[SwitchC-ospf-1] filter-policy ip-prefix in import
[SwitchC-ospf-1] quit
# 查看SwitchC的IP路由表,可以看到SwitchC的IP路由表中,仅接收了列表in定义的1条路由。
[SwitchC] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.18.0/24 O_ASE 150 1 D 192.168.2.1 Vlanif20
192.168.2.0/24 Direct 0 0 D 192.168.2.2 Vlanif20
192.168.2.2/32 Direct 0 0 D 127.0.0.1 Vlanif20
配置文件
SwitchA的配置文件
#
sysname SwitchA
#
vlan batch 10
#
interface Vlanif10
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
ospf 1
filter-policy ip-prefix a2b export static
import-route static
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
ip ip-prefix a2b index 10 permit 172.16.17.0 24
ip ip-prefix a2b index 20 permit 172.16.18.0 24
ip ip-prefix a2b index 30 permit 172.16.19.0 24
#
ip route-static 172.16.16.0 255.255.255.0 NULL0
ip route-static 172.16.17.0 255.255.255.0 NULL0
ip route-static 172.16.18.0 255.255.255.0 NULL0
ip route-static 172.16.19.0 255.255.255.0 NULL0
ip route-static 172.16.20.0 255.255.255.0 NULL0
#
return
SwitchB的配置文件
#
sysname SwitchB
#
vlan batch 10 20
#
interface Vlanif10
ip address 192.168.1.2 255.255.255.0
#
interface Vlanif20
ip address 192.168.2.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255
#
return
SwitchC的配置文件
#
sysname SwitchC
#
vlan batch 20
#
interface Vlanif20
ip address 192.168.2.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 20
#
ospf 1
filter-policy ip-prefix in import
area 0.0.0.0
network 192.168.2.0 0.0.0.255
#
ip ip-prefix in index 10 permit 172.16.18.0 24
#
return