路由控制的目的
1)控制路由的发布:通过路由策略对发布的路由进行过滤,只发布满足条件的路由
2)控制路由的接收:通过路由策略对接收的路由进行过滤,只接收满足条件的路由
3)控制路由的引入:通过路由策略控制从其他路由协议引入的路由条目,只有满足条件的路由才会被引入
路由匹配工具
路由匹配工具有ACL 和ip-prefix(IP前缀)两种
ip前缀列表命令
1)ip-prefix-name:
地址前缀列表名称,,,prefix--前缀
2)序号
本匹配项在地址前缀列表中的序号,匹配时根据序号从小到大顺序匹配
3)动作
permit/deny,地址前缀列表的匹配模式为允许/拒绝,,表示匹配/不匹配
4)IP网段与掩码
路由匹配的网络地址,以及限定匹配网络地址的前多少位需严格匹配
5)掩码范围
匹配路由前缀长度,掩码长度的匹配范围为 mask-length<=greater-equal-value<=less-equal-value<=32
掩码基础长度(mask-length) ≤ ge最小值(greater-equal-value) ≤ le最大值(less-equal-value) ≤ 32
IP ip-prefix test index 10 permit 192.168.1.0 24 greater-equal 24 less-equal 26
前缀列表名 序号 动作 ip网段与掩码, 掩码范围
ip ip‑prefix 名字 permit 网络 N ge M le L
- N:路由的前 N 个比特必须和命令里的网络前缀保持一致;
- ge‑M、le‑L 用来限定路由总的掩码长度范围:掩码;
- 参数省略规则:
- 省略
le L:默认 L=32; - 省略
ge M:默认 M=N; - ge、le 全都省略:掩码必须严格等于 N,仅匹配这一条路由;
- 省略
- 硬性语法约束:N≤M≤L≤32,不满足该条件命令直接报错。
greater‑equal:简写ge,规定路由实际掩码的最小值;less‑equal:简写le,规定路由实际掩码最大值。
注意:前缀列表的规则自动以10为步调生成
注意:末尾隐含一条拒绝所有的规则,ip‑prefix 末尾隐含deny 0.0.0.0 0
[r1]ip ip-prefix aa permit 192.168.1.0 24 less-equal 28抓取掩码24.25.26.27.28网段的流量
[r1]ip ip-prefix aa permit 192.168.1.0 24 greater-equal 28抓取的是掩码大于等于28,前面的数 字代表的是前24位不变,后面的数字代表掩码
[r1]ip ip-prefix aa permit 192.168.0.0 16 greater-equal 24 less-equal 24
[r1]ip ip-prefix aa permit 0.0.0.0 0 greater-equal 32---抓取的是所有主机路由
[r1]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32---抓取所有
[r1]ip ip-prefix aa permit 0.0.0.0 0 ---抓取缺省路由
路由策略工具
路由策略是一套对路由条目做「过滤、修改属性、控制发布 / 接收」的工具,用来人为干预路由的传递与优选,实现路由控制、流量调度、防环路、业务隔离。
路由策略工具主要有filter-policy(过滤策略)和route-policy(路由策略)两种
filter-policy
前置规则:IP 前缀列表末尾自带隐含 deny 所有,所有未被 permit 语句匹配到的路由,都会触发过滤动作,下文描述均针对被策略 deny 匹配的路由。
距离矢量路由协议(RIP)中 filter-policy 逻辑
filter-policy import :直接拦截邻居发送过来的路由更新报文,本机不会接收这条路由,该路由不会存入本地路由表;上游发送的路由直接被丢弃,全网其他设备也无法通过本机获取该网段。
filter-policy export:拦截本机发往邻居的路由更新报文,本机不会将这条路由发布给邻居;下游邻居无法学习到该网段路由。
补充:匹配 permit 的路由不受任何拦截,正常收发、正常加入路由表。
链路状态路由协议(OSPF)中 filter-policy 逻辑
filter-policy import :OSPF 的 LSA 会完整全网泛洪,所有设备的链路状态数据库 LSDB 完全同步,过滤策略不会拦截任何 LSA;
本地设备运行 SPF 算法计算出全部路由后,仅对 deny 路由执行屏蔽,不把该路由写入本机 IP 路由表,同区域其他设备不受影响,依旧能在自身路由表看到该网段。
补充:匹配 permit 的路由,计算完成后正常写入本地路由表。
filter-policy export :仅对通过 import-route 从其他协议引入的外部路由生效,对 OSPF 原生 1、2、3 类内部 / 区域间 LSA 完全无效;
匹配 permit 的外部路由,才会生成 5 类 / 7 类外部 LSA 向外泛洪;
匹配 deny 的外部路由,不会生成对应的外部 LSA,整条外部路由不会在 OSPF 域内传递。
| 协议类型 | 命令 | 完整作用(区分 permit/deny) | 核心特点(背诵考点) |
|---|---|---|---|
| 距离矢量(RIP) | filter-policy import | 入方向过滤邻居发来的路由更新 匹配 permit:接收路由,加入路由表 匹配 deny:直接丢弃更新,不接收该路由 | 拦截路由更新报文;拒绝的路由本机完全收不到,上下游全网受影响 |
| 距离矢量(RIP) | filter-policy export | 出方向过滤发给邻居的路由 匹配 permit:向邻居发布这条路由 匹配 deny:拦截报文,不向邻居发布 | 拦截发布报文;下游邻居无法学习到被拒绝网段 |
| 链路状态(OSPF) | filter-policy import | LSA 正常泛洪,本地 SPF 算出全部路由后再过滤 匹配 permit:正常写入本机路由表 匹配 deny:算出路由但不写入本机路由表 | LSA 全网完整同步,其他设备不受影响,仅本机看不到 deny 路由 |
| 链路状态(OSPF) | filter-policy export | 仅针对 匹配 permit:生成 5/7 类外部 LSA 泛洪 匹配 deny:不生成外部 LSA,外部路由不发布 | 对内网 1/2/3 类 LSA 无任何过滤效果,只管跨协议引入的外部路由 |
route-policy
步骤大致可分为node---->rule--->action
- 前缀列表:
- P1:匹配 192.168.1.0/24;
- P2:匹配 192.168.2.0/24;
- P3:匹配剩下网段。
- route‑policy 策略 RP‑TEST:
- node10:匹配 192.168.1.0/24,cost 改为 20,允许通过;
- node20:拒绝 192.168.2.0/24;
- node30:放行其余全部路由;
- 在 OSPF 引入静态路由调用该策略。
#1、配置前缀列表 ip ip-prefix P1 index 10 permit 192.168.1.0 24 ip ip-prefix P2 index 10 permit 192.168.2.0 24 #2、配置route‑policy route-policy RP-TEST permit node 10 if-match ip-prefix P1 apply cost 20 route-policy RP-TEST deny node 20 if-match ip-prefix P2 #deny节点里面就算写apply也不会生效 route-policy RP-TEST permit node 30 #没有if‑match代表匹配所有剩余路由,apply不配置,属性保持原样 #3、调用策略(OSPF引入静态路由) ospf 1 import-route static route-policy RP-TESTroute--policy的结构
一个路由策略由一个或多个结点构成,每个结点包括多个if-match和apply子句。
1)节点号
一个路由策略可以由多个结点(node)构成,路由匹配route-policy时遵循以下两个规则
Ⅰ)顺序匹配
在匹配过程中,系统按照节点号从小到大的顺序依次检查各个表项,因此在指定节点号时,要注意符合期望的匹配顺序
Ⅱ)唯一匹配
route-policy各结点号间是“或”的关系,只有通过一个结点匹配,,就认为通过该过滤器,不再进行其他结点的匹配。
2)匹配模式
结点的匹配模式分为两种:permit和deny
Ⅰ)perimit--允许
指定结点的匹配模式为允许。当路由项通过该结点过滤后,将执行该结点的apply(应用)子句,不进入下一个结点;如果路由项没有通过该结点过滤,将进行下一节点继续匹配
Ⅱ)deny--拒绝
指定结点的匹配模式为拒绝,这时apply子句不会被执行。当路由项满足该结点的所有if-match子句时,,将被拒绝通过该结点,不能进入下一结点;如果路由项不满该结点的所有if-match子句,则进入下一个结点继续匹配。
3)if-match子句
定义匹配条件
route-policy的每一个节点都可以包含多个if-match子句,也可以不包含。
4)apply子句
指定动作
路由通过route-policy过滤时,系统按照apply子句指定的动作对路由信息进行一些属性设置。route-policy的每个结点可包含多个apply子句,也可以不包含。只需要过滤路由时,不需要设置路由的属性,则可以不用apply子句
5)goto next-node子句
用来设置路由对通过当前结点匹配后,跳转到指定的结点继续匹配
策略路由--PBR
Policy-Based Routing,策略路由让网络设备不仅能够基于报文的目的IP地址进行数据转发,更能基于其他元素进行数据转发:源目端口号,原目MAC地址。。。。。。
区别
路由策略:
针对路由信息,是一套用于对路由信息进行过滤、属性设置等操作的方法,通过对路由的操作或控制,来影响数据报文的转发路径
PBR
针对数据报文,PBR直接对数据报文进行操作,通过多种手段匹配感兴趣的报文,然后执行丢弃或强制转发路径等操作
PBR分类
1)接口PBR
Ⅰ)接口PBR只针对转发的报文起作用,对本地始发的报文无效
Ⅱ)接口PBR调用在接口下,对接口的入方向报文生效,默认设备按照路由表的下一跳进行报文转发,如果配置了接口PBR,则设备按照接口PBR指定的下一跳进行转发。
2)本地PBR
Ⅰ)本地PBR对本地始发流量有效
Ⅱ)本地PBR在系统视图中调用
MQC
MQC是模块化Qos命令行,指通过将具有某类共同特征的数据流划分一类,并为同一类数据流提供相同的服务,也可以为不同类的数据流提供不同的服务。
MQC三要素
1)流分类
配置流分类,用于匹配感兴趣的数据流
可基于VLANTag、acl规则、DSCP等
2)流行为
将感兴趣的报文进行重定向
可以设置重定向的下一跳IP地址或者出接口
3)流策略
在接口的入方向应用流策略
在属于该VLAN并匹配流分类中规则的入方向报文实施策略控制
在全局或板卡上应用流策略
路由策略__filter-policy--- 过滤策略实验
目的:通过过滤策略控制对路由信息的写入
三台路由器OSPF宣告,连通
所有路由已经连通,通过ospf宣告路由
设置1.0/24为主网段,2.0/24,3.0/24为次网段
在接口视图下启用 OSPF,把 LoopBack0 接口划入 Area 0 区域;等价于在 OSPF 进程下用network宣告该接口网段。
ospf network‑type broadcast
- LoopBack 接口默认 OSPF 网络类型为Loopback。
- 默认情况下:无论你配置的 IP 掩码是 / 24,OSPF 发布路由强制变成/32 主机路由。
- 修改为
broadcast(广播型)之后:- OSPF 会按照接口配置的实际掩码向外发布路由,例如
192.168.4.1/24就发布 24 位网段; - 同时广播网络类型会发送 Hello 报文,可以建立邻居(Loopback 默认不会发 Hello 报文)。
- OSPF 会按照接口配置的实际掩码向外发布路由,例如
查看R2上的OSPF路由表
查看R3OSPF路由表
此时R2,R3都有1.0 2.0 3.0 网段的路由信息
filter-policy配置
现在通过filter-policy实现在R2上看不到192.168.1.0这条路由,但是能在R3上看到
前缀列表命令
ip ip-prefix 前缀名 index 序号值 动作 IP网段 掩码 掩码范围
在R2 的ospf中调用过滤策略,
匹配 permit 的三个网段:计算出来之后,正常加入 R2 的路由表
filter-policy import对接收的路由设置过滤策略,只有通过过滤策略的路由才会被添加到路由表中,没有通过过滤策略的不会被添加,但不影响对外发布
此时R2的全局路由表中没有1.0/24网段路由,R2的OSPF路由表中仍有,但是R3全局路由表中有。
原因:
在链路状态协议中,各路由设备间传递的是LSA信息,然后设备根据LSA汇总的LSDB信息计算出路由表。但是filter-policy只能过滤路由信息,无法过滤LSA。
撤销R1上对1.0,2.0,3.0的路由通告,改为引入直连,但要保证R2,R3上只能收到1.0/24这条路由
R2路由表,R3同样的
通过filter-policy让R2.R3只能收到1.0这条路由
此时
原因:
OSPF引入外部路由后,为了避免产生路由环路,在发布时通过filter-policy export命令对引入路由进行过滤,只将满足条件的外部路由转换为Type5 LSA 再发布
当网络上同时部署了OSPF和其他路由协议时,如果已经再边界设备上引入了其他路由协议的路由,在默认情况下,该设备将把引入的全部外部路由发布给OSPF邻居。如果只希望将引入的部分外部路由发布给邻居,可以使用filter-policy export命令