概念
路由策略是通过一系列的工具,对路由条目添加各种策略,实现对路由的产生,发送和选择进行控制,通过控制路由条目,达到对报文转发的控制
条件工具:用于把需要控制的路由匹配出来,ACL ip-prefix 团体列表 as-path-filter
策略工具:用于把抓取出来的路由执行某个动作,拒绝,允许,修改属性。Router-policy
调用工具:用于把定义好的路由策略,具体应用到某个协议中,让路由策略生效。filter-policy,import-route
正掩码,反掩码,通配符
正掩码:
1 代表匹配,0 代表任意 0 和 1 不能交叉出现
使用场景:配置 IP 地址
反掩码:
1 代表任意,0 代表匹配 0 和 1 不能交叉出现
使用场景:在 OSPF 协议中通告使用
通配符:
1 代表任意,0 代表匹配 0 和 1 可以交叉出现
使用场景:在 ACL 中使用
通配符的优势:例如在一个网段中可以选择出主机号是 偶数 或者 奇数 的机器
如 匹配192.168.1.0/24 网段中的偶数主机:192.168.1.0 0.0.0.254
Filter-Policy(过滤-策略)
是一个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用于 ISIS、OSPF、BGP等协议
链路状态协议和距离矢量协议
链路状态协议:向全网链路状态通告 LSA 或 LSP,同步拓扑图,收敛更快,更精确(OSPF,ISIS)
距离矢量协议:向邻居传递完整的路由表(RIP,BGP)
Filter-policy:只能过滤路由表,但不能过滤 LSA
Filter-policy 基础配置命令:
在 OSPF 中的应用:
按照过滤策略,设置 OSPF 对接收的路由进行过滤
Huawei-ospf-100\] **filter-policy** { *acl-number* \| **acl-name** *acl-name* \| **ip-prefix** *ip-prefix-name* \| **route-policy** *route-policy-name* \[ **secondary** \] } **import**
按照过滤策略,设置对引入的路由在向外发布时进行过滤
Huawei-ospf-100\] **filter-policy** { *acl-number* \| **acl-name** *acl-name* \| **ip-prefix** *ip-prefix-name* \| **route-policy** *route-policy-name* } **export** \[ *protocol* \[ *process-id* \]
在 ISIS 中的应用
配置 ISIS 路由加入 IP 路由表时的过滤策略
Huawei-isis-1\] **filter-policy** { *acl-number* \| **acl-name** *acl-name* \| **ip-prefix** *ip-prefix-name* \| **route-policy** *route-policy-name* } **import**
配置 ISIS 对已引入的路由在向外发布时进行过滤的过滤策略
Huawei-isis-1\] **filter-policy** { *acl-number* \| **acl-name** *acl-name* \| **ip-prefix** *ip-prefix-name* \| **route-policy** *route-policy-name* } **export** \[ *protocol* \[ *process-id* \]
在 BGP 中的应用
配置对接收的路由信息进行过滤
Huawei-bgp-af-ipv4\] **filter-policy** { *acl-number* \| **acl-name** *acl-name* \| **ip-prefix** *ip-prefix-name* } **import**
配置对发布的路由进行过滤,只有只有通过过滤的路由才被 BGP 发布
Huawei-bgp-af-ipv4\] **filter-policy** { *acl-number* \| **acl-name** *acl-name* \| **ip-prefix** *ip-prefix-name* } **export** \[ *protocol* \[ *process-id* \]
配置向外对等体发布或从对等体接收路由时的过滤策略
Huawei-bgp-af-ipv4\] **peer** { *group-name* \| *ipv4-address* } **filter-policy** { *acl-number* \| **acl-name** *acl-name* } { **import** \| **export** }
ACL 被 traffice-filter 调用的时候默认存在允许所有语句
ACL 被 filter-policy 调用的时候默认存在拒绝所有语句,所以一般在配置完后添加:rule permit source any
在 RIP 协议中
filter-policy 的使用方法:
filter-policy 2000 export //对所有接口发出的路由实现过滤
filter-policy 2000 import //对所有接口接收的路由实现过滤
filter-policy 2000 import/export [interface] //针对特定接口接受/发出的路由实现过滤
filter-policy 用于路由过滤
traffic-filter 用于流量过滤
import-route static //引入静态路由
filter-policy 2000 export static //代表将静态路由引入到 rip 协议的时候实现过滤
在 OSPF 中:
filter-policy 2000 export //针对链路状态路由协议无效,因为链路状态路由协议不发送路由
filter-policy 2000 import //针对链路状态路由协议,是将链路状态计算出路由的时候实现过滤,但是不影响 LSA 的泛洪,其他路由器可以收到这条信息
前缀列表:
ACL 的局限性:
ACL 只能匹配路由的前缀,没有办法匹配路由的掩码信息,如果有两条路由前缀相同,使用 ACL没有办法实现精确的过滤
前缀列表的优势:
既能匹配路由的前缀信息,也能匹配路由的掩码信息,但是前缀列表不能用于流量的过滤
前缀列表的组成:
- name:名字,用于标识一条唯一的前缀列表
- index:索引号,与 ACL 的 rule 编号类似,匹配顺序为从小到大依次匹配,默认步长为 10
- Permit/deny:行为,允许或者拒绝
- length:长度,即用于定义网络前缀的长度
- Ge:大于等于的意思
- Le:小于等于的意思
配置前缀列表需要满足 Length ≤ Ge ≤ Le
前缀列表默认隐含拒绝所有语句,当路由不匹配任何 index 的时候,将会拒绝
前缀列表的表达形式:
Ip ip-prefix test permit 192.168.1.0 24 //匹配当前单条路由
Ip ip-prefix test permit 192.168.1.0 24 ge 32 //前 24 bit 固定,匹配掩码在 25~32 之间的路由
Ip ip-prefix test permit 192.168.1.0 24 le 32 //前 24 bit 固定,匹配掩码在 24~32 之间的路由
Ip ip-prefix test permit 192.168.1.0 24 ge 26 le 30 //前 24 bit 固定,匹配掩码在 26~30 之间的路由
Ip ip-prefix test permit 0.0.0.0 0 //匹配默认路由
Ip ip-prefix test permit 0.0.0.0 0 le 32(ge 0) //匹配所有路由
Ip ip-prefix test permit 0.0.0.0 0 ge 32 //匹配所有主机路由
前缀列表的特点:
唯一匹配:当路由匹配了一条索引之后,不在匹配下面的索引
顺序匹配:按照索引号的大小,从小到大进行匹配,如果不配置 index,默认以 10 递增
默认拒绝:当路由不匹配任何索引之后,路由将会拒绝
例只允许 192.168.1.0/25 和 192.168.1.0/26 通过,通过一下配置就可以实现过滤


Route-Policy:
是一种功能非常强大的路由策略工具,可以灵活的与 ACL、IP-Prefix、As-Path-Filter 等工具配合使用
上述学习的 IP-prefix 和 filter-policy 只能匹配路由信息,不能修改路由属性,而 Route-Policy 可以修改路由属性
应用场景:
常用于路由引入时进行过滤或者对路由的属性进行修改
BGP 协议实施策略最主要的工具
可以作为 Filter-policy 的匹配条件
Route-policy 的组成模式:
- 匹配模式:
permit:当路由匹配 permit 的节点,将会被允许,并且将会执行 apply 语句
deny: 当路由匹配 deny 的节点,将会被拒绝,不执行 apply 语句
- 节点号:一个 route-policy 由多个节点号进行组成,每个节点号叫做一个 node,配置 route-policy 的时候必须携带节点号,执行策略的时候按照节点号大小从小到大依 次进行
- 匹配语句:if-match,用于定义一些条件,满足条件即代表匹配,一个 node 中可以定义多个 if-match 语句,多个 if-match 语句之间是逻辑"与"的关系
- 执行语句:apply 用于执行某个动作,设备按照 apply 语句的动作对路由信息进行修改,一个 node 可以存在多个 apply 语句,如果存在多个,则都执行修改,也可以不存在 apply 语句,如果不存在 apply 语句,只代表匹配,而不修改属性
- 名字:用于标识唯一的一个 route-policy
多个 node 之间是逻辑 "或"的关系, 即路由匹配哪个 node,就会执行该 node 的 apply 动作
顺序匹配:当路由满足多个 node 的时候,按照 node 从小到大依次匹配
唯一匹配:当路由匹配一 node 之后,不会在向下匹配
默认拒绝:当路由不满足任何 node 之后,将会被拒绝
Route-Policy 基础配置命令:
- 创建Route-policy
Huawei\] **route-policy** *route-policy-name* { **permit** \| **deny** } **node** *node*
创建路由策略并进入 Route-policy 视图
- 配置 if-match 子句
Huawei-route-policy\] **if-match ?** **acl**匹配基本ACL **cost**匹配路由信息的cost **interface**匹配路由信息的出接口 **ip-prefix**匹配前缀列表
- 配置 apply 子句
Huawei-route-policy\] **if-match ?** **acl**匹配基本ACL **cost**匹配路由信息的cost **interface**匹配路由信息的出接口 **ip-prefix**匹配前缀列表
案列,匹配路由+修改属性

再添加一条 node 允许其余的路由通过而不做修改:
route-policy import permit node 40