网络的那些事——初级——路由策略
什么是路由策略?
路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。
路由协议在发布、接收和引入路由信息时,根据实际组网需求实施一些策略,以便对路由信息进行过滤和改变路由信息的属性,如:
-
控制路由的接收和发布
只发布和接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。
-
控制路由的引入
在一种路由协议引入其它路由协议发现的路由信息丰富自己的路由信息时,只引入一部分满足条件的路由信息。
-
设置特定路由的属性
修改通过路由策略过滤的路由的属性,满足自身需要。
路由策略的实现原理
路由策略使用不同的匹配条件和匹配模式选择路由和改变路由属性。在特定的场景中,路由策略的6种过滤器也能单独使用,实现路由过滤。若设备支持BGP to IGP功能,还能在IGP引入BGP路由时,使用BGP私有属性作为匹配条件。
一个路由策略中包含N(N>=1)个节点(Node)。路由进入路由策略后,按节点序号从小到大依次检查各个节点是否匹配。匹配条件由If-match子句定义,涉及路由信息的属性和路由策略的6种过滤器。
当路由与该节点的所有If-match子句都匹配成功后,进入匹配模式选择,不再匹配其他节点。匹配模式分permit和deny两种:
- permit:路由将被允许通过,并且执行该节点的Apply子句对路由信息的一些属性进行设置。
- deny:路由将被拒绝通过。
当路由与该节点的任意一个If-match子句匹配失败后,进入下一节点。如果和所有节点都匹配失败,路由信息将被拒绝通过。
应用场景:
应用路由策略过滤特定路由
运行OSPF协议的网络中,RouterA从Internet网络接收路由,并为RouterB提供了部分Internet路由。其中:
-
RouterA仅提供172.16.17.0/24、172.16.18.0/24和172.16.19.0/24给RouterB
-
RouterC仅接收路由172.16.18.0/24
-
RouterD接收RouterB提供的全部路由
有多种方法可以实现上述要求,下面列举常用的两种:
-
使用地址前缀列表(IP-Prefix List)
- 在RouterA上配置地址前缀列表,并且配置OSPF利用该地址前缀列表作为RouterA的出口策略。
- 在RouterC上配置另外一个地址前缀列表,并且配置OSPF利用该地址前缀列表作为RouterC的入口策略。
-
使用路由策略
- 在RouterA上配置路由策略(其中匹配条件可以是地址前缀列表、路由cost、路由标记Tag等),并且配置OSPF利用该路由策略作为RouterA的出口策略。
- 在RouterC上配置另外一个路由策略,并且配置OSPF利用该路由策略作为RouterC的入口策略。
使用路由策略与使用地址前缀列表相比,优点是对路由的控制更为灵活,并且可以修改路由的属性,缺点是配置复杂。
应用路由策略实现OSPF透传其他协议路由
某自治区域运行OSPF协议,作为传输区域为其他小区域提供互联。RouterA连接的IS-IS区域的路由需要通过OSPF区域透传到Router D所连接的IS-IS区域。
为满足上述需求,可以在RouterA上配置路由策略,为引入的IS-IS路由设置Tag值。RouterD上会根据这个Tag值从众多OSPF路由中分离出这条IS-IS路由。
配置案例:
对接收和发布的路由进行过滤示例
运行OSPF协议的网络中,RouterA从Internet网络接收路由,并为OSPF网络提供了Internet路由。要求OSPF网络中只能访问172.16.17.0/24、172.16.18.0/24和172.16.19.0/24三个网段的网络,其中RouterC连接的网络只能访问172.16.18.0/24网段的网络。
配置思路
采用如下的思路配置对路由进行过滤:
-
在RouterA上配置路由策略,在路由发布时运用路由策略,使RouterA仅提供路由172.16.17.0/24、172.16.18.0/24、172.16.19.0/24给RouterB,实现OSPF网络中只能访问172.16.17.0/24、172.16.18.0/24和172.16.19.0/24三个网段的网络。
-
在RouterC上配置路由策略,在路由引入时运用路由策略,使RouterC仅接收路由172.16.18.0/24,实现RouterC连接的网络只能访问172.16.18.0/24网段的网络
操作步骤
1.配置各接口的IP地址
# 配置RouterA的各接口的IP地址。
<Huawei> system-view [Huawei] sysname RouterA [RouterA] interface gigabitethernet 1/0/0 [RouterA-GigabitEthernet1/0/0] ip address 192.168.1.1 255.255.255.0 [RouterA-GigabitEthernet1/0/0] quit
2.配置OSPF基本功能
# RouterA的配置
[RouterA] ospf
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
# RouterB的配置
[RouterB] ospf
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] network 192.168.3.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
# RouterC的配置
[RouterC] ospf
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# RouterD的配置
[RouterD] ospf
[RouterD-ospf-1] area 0
[RouterD-ospf-1-area-0.0.0.0] network 192.168.3.0 0.0.0.255
[RouterD-ospf-1-area-0.0.0.0] quit
3.在RouterA上配置5条静态路由,并将这些静态路由引入到OSPF协议中
[RouterA] ip route-static 172.16.16.0 24 NULL 0
[RouterA] ip route-static 172.16.17.0 24 NULL 0
[RouterA] ip route-static 172.16.18.0 24 NULL 0
[RouterA] ip route-static 172.16.19.0 24 NULL 0
[RouterA] ip route-static 172.16.20.0 24 NULL 0
[RouterA] ospf
[RouterA-ospf-1] import-route static
[RouterA-ospf-1] quit
在RouterB上查看IP路由表,可以看到OSPF引入的5条静态路由。(display ip routing-table)
4.配置路由发布策略
# 在RouterA上配置地址前缀列表a2b。
[RouterA] ip ip-prefix a2b index 10 permit 172.16.17.0 24
[RouterA] ip ip-prefix a2b index 20 permit 172.16.18.0 24
[RouterA] ip ip-prefix a2b index 30 permit 172.16.19.0 24
# 在RouterA上配置发布策略,引用地址前缀列表a2b进行过滤。
[RouterA] ospf
[RouterA-ospf-1] filter-policy ip-prefix a2b export static
在RouterB上查看IP路由表,可以看到RouterB仅接收到列表a2b中定义的3条路由。(
display ip routing-table)
5.配置路由接收策略
在RouterC上配置地址前缀列表in。
[RouterC] ip ip-prefix in index 10 permit 172.16.18.0 24
# 在RouterC上配置接收策略,引用地址前缀列表in进行过滤。
[RouterC] ospf
[RouterC-ospf-1] filter-policy ip-prefix in import
查看RouterC的IP路由表,可以看到RouterC的本地核心路由表中,仅接收了列表in定义的1条路由。(display ip routing-table)
查看RouterC的OSPF路由表,可以看到OSPF路由表中接收到3条列表a2b中定义的路由。因为在链路状态协议中,filter-policy import命令用于过滤从协议路由表加入本地核心路由表的路由。(
display ospf routing)