前文我们了解了路由策略工具Route-Policy相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15322135.html;今天我们来聊一聊策略路由相关话题;

  策略路由(Policy Based Route 基于策略的路由,简称PBR);我们知道路由策略的核心就是通过过滤工具将要处理的路由过滤出来,然后使用策略或调用工具将过滤出来的路由做某些动作,比如拒绝或者允许;如果我们需要修改路由属性,则使用策略工具Route-Policy,然后使用调用工具在某个动态路由进程下应用对应的路由策略;路由策略的作用是通过各种工具影响路由表,从而实现影响数据的转发;我们今天说的策略路由和前边的路由策略,它们都是可以实现影响数据的转发,即策略路由和路由策略的最终目的是一样的;策略路由和路由策略不同的是,路由策略是影响路由表来实现影响数据包的转发,而策略路由它并不会影响路由表,它是通过策略来定义转发报文的规则,即打破了传统路由选路规则;默认情况下路由器是通过路由表来转发数据,而定义了策略路由的路由器,它会优先根据策略路由来转发数据,如果对应报文没有被策略路由匹配到,那么对应报文会通过路由表来进行转发;简单讲策略路由就是通过管理员定义规则来实现报文转发,如果对应报文没有被策略匹配到,那么它还是会根据路由表来进行转发;

  策略路由应用场景

  提示:我们可以制定策略来实现学生网段访问外网走ISP1,教师网段访问外网访问ISP2;对应路由器的路由表对应网段的下一跳或出接口我们都可以不用管,直接根据自己的需求写策略路由来描述对应流量的转发过程;即我们可以根据制定策略路由实现数据包转发根据对应数据包源地址选路(而路由表是通过目标地址,根本不看源地址);

  提示:策略路由除了可以实现通过源地址来选路以外,我们还可以通过不同应用来选路;比如上图FTP的流量走s2/0,www流量走s2/1;对于路由策略我们根本无法做到根据不同应用流量来选路;

  路由策略和策略路由的区别

  提示:路由策略中,拒绝的将不会被通过,其原因是路由策略最终是影响路由表,然后对应数据包转发已经是通过影响后的路由表,所以路由策略中明确拒绝的路由,对应路由表中也不会存在,没有路由,很显然数据包转发也不能正常进行;但在路由策略中,拒绝的将做正常路由表转发;因为策略路由它不会去修改路由表,所以没有被策略路由匹配上或者被拒绝的流量,都会再去根据路由表进行数据包转发;路由策略和策略路由两者最大的区别在于路由策略基于控制平面,为路由协议和路由表服务;而策略路由是基于转发平面,为转发策略服务;一个直接影响路由表,一个不影响路由表,只影响满足对应策略的数据转发;

  策略路由规则

  提示:策略路由和路由策略规则语法都比较像,都有是以节点为单位,一个节点里可以包含多个条件和apply 子句;都有名称、匹配模式和节点编号;节点与节点之间的关系是或关系;节点里如果有多个条件或apply 子句,则它们的关系是与关系,即多个条件都必须同时满足,同时对应apply子句也会同时都被执行;

  策略路由匹配流程

  提示:策略路由的匹配流程和路由策略的匹配流程基本一样,都是从上至下一次匹配每个节点,如果被某一节点匹配上以后,对应不再继续向下匹配,匹配上的流量根据匹配模式,如果匹配模式是permit则执行apply子句;如果匹配模式deny则按照普通报文根据路由表转发;如果没有被任何一个节点上的规则匹配,对应报文也会按照普通报文根据路由表转发;策略路由匹配规则和路由策略匹配规则唯一不同之处就是最后的默认规则,路由策略的默认规则是拒绝操作,而策略路由的默认规则是按照普通报文根据路由表转发;即最后被策略路由拒绝或没有被策略路由匹配的报文最终都会当作普通报文根据路由表进行转发处理;

  本地策略路由:本地策略路由是指经对本机下方的报文进行处理,对转发到报文不起作用;

  提示:本地策略路由只影响本机下发的报文,并不影响经过本机转发的报文;

  接口策略路由:接口路由策略是指只对转发到报文起作用,对本地下发的报文不起作用;

  提示:转发报文是指不是本地发送的报文,像这类报文只会被接口策略路由匹配,本地策略路由不会去匹配;简单讲,本地策略路由只能匹配本地下发的报文,而接口策略路由只能匹配被转发的报文;

  实验:如下拓扑,配置ospf

  R1的配置

sys
sys R1
int g0/0/0
ip add 172.16.0.1 24
int g0/0/1
ip add 172.17.0.1 24
int g0/0/2
ip add 192.168.12.254 24 ospf 1 router-id 1.1.1.1
area 0
net 172.16.0.1 0.0.0.0
net 172.17.0.1 0.0.0.0
net 192.168.12.254 0.0.0.0

  R2的配置

sys
sys R2
int g0/0/0
ip add 172.16.0.2 24
int g0/0/1
ip add 172.17.0.2 24
int g0/0/2
ip add 192.168.21.254 24 ospf 1 router-id 2.2.2.2
area 0
net 172.16.0.2 0.0.0.0
net 172.17.0.2 0.0.0.0
net 192.168.21.254 0.0.0.0

  client1的配置

  server1的配置

  验证:查看R1的路由表

  提示:可以看到R1学习到了192.168.21.0/24网段路由,且出接口和下一跳都有两个;从上面的信息可以看到R1去往192.168.21.0/24网段的流量会被172.16.0.0和172.17.0.0这两条链路负载分担;

  验证:在R1上用ping命令测试,看看R1去往192.168.21.1的流量走哪一条链路?

  提示:左边是R1 的g0/0/0口抓包,右边是g0/0/1口抓包;可以看到R1tracert 192.168.21.1走的是172.17.0.2下一跳;

  在R1上指定策略路由,让ping 192.168.21.1的流量下一跳是172.16.0.2

  在R1上新建acl匹配去往192.168.21.1的流量

  在R1上新建策略路由,调用acl 3000,执行修改下一跳地址为172.16.0.2

  在R1上调用策略路由,再次ping 192.168.21.1 ,抓包看看对应报文会走那边?

  提示:可以看到调用了策略路由以后,对应R1ping R2的流量就走g0/0/0口了;因为下一跳为172.16.0.2和R1的g0/0/0口直连;

  验证:用客户端ping服务端,看看对应流量是否会走172.16.0.2?

  提示:可以看到从客户端转发的流量并不会受本地策略的影响,它还是走没有做本地策略前172.17.0.2的链路;从上面实验可以看到本地策略路由对转发的流量是不生效的;

  接口策略路由配置

  接口策略路由是通过流策略技术实现;流策略是指流分类和流行为关联;流策略形成了模块化配置最大优点是可以节省配置,支持匹配修改;流分类我们可以理解为流量匹配分类工具,它主要将对应流量抓去出来,进行分类;流行为我们可以理解为对流量的处理动作的描述;比如打标签、重定向、负载分担、报文分片、流量限速、流量统计等等;流策略就是调用流分类和流行为关联的调用用工具,即我们在那个接口的那个方向应用流分类和流行为;

  实验:还是上述实验拓扑,使用流分类过滤FTP流量、调整FTP流量链路或www流量链路

  验证:用客户端访问服务端的FTP和HTTP服务,抓包看看对应流量是怎么走的

  提示:可以看到FTP的流量来回都是走的G0/0/0口到达服务器,HTTP的流量来回都是走g0/0/1口;

  在R1上创建ACL匹配FTP流量

  在R1上创建流分类,调用acl name FTP

  提示:创建流分类,需要给流分类取一个名称,以示区分其他流分类;在流分类里用if-match 语句调用acl;这里acl可以写acl编号,或者是acl名称;

  在R1上创建流行为

  提示:以上命令表示创建一个名为redirect-g0/0/1的流行为,具体动作是重定向下一跳地址为172.17.0.2;

  在R1上创建流策略

  提示:创建流策略就是把流分类和流行为进行关联的过程;

  在R1的g0/0/2接口调用流策略filter-FTP-to-g0/0/1

  提示:接口策略路由只能在接口的入方向调用,因为出方向的流量是经过路由表选路以后才能匹配到;

  验证:查看路由器流策略应用的接口

  提示:可以看到我们创建的流策略在R1的g0/0/1口应用着;

  验证:现在用客户端访问服务端FTP服务,看看对应流量是否是我们流策略定义的走呢?

  提示:可以看到现在客户端访问服务端FTP服务,对应流量不再从g0/0/0口发出,而是根据我们定义的流策略从g0/0/1口发出;

HCNP Routing&Switching之路由控制-策略路由的更多相关文章

  1. HCNP Routing&Switching之路由控制、路由策略和IP-Prefix List

    前文我们了解了IS-IS路由聚合和认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15306645.html:今天我们来聊一聊路由控制技术中的路由策 ...

  2. HCNP Routing&Switching之路由引入

    前文我们了解了路由控制技术策略路由相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15333139.html:今天我们来聊一聊路由引入技术相关话题: 路 ...

  3. HCNP Routing&Switching之路由过滤工具Filter-Policy

    前文我们了解了路由控制技术中路由策略和路由匹配工具IP-Prefix相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15314262.html:今天我们 ...

  4. HCNP Routing&Switching之路由引入导致的问题及解决方案

    前文我们了解了路由引入相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15359902.html:今天我们来讨论下由于路由引入所导致的问题以及怎么避免此 ...

  5. HCNP Routing&Switching之路由策略工具Route-Policy

    前文我们了解了路由过滤和路由过滤工具Filter-Policy使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15316188.html:今天我们来 ...

  6. HCNP Routing&Switching之BGP路由控制

    前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html:今天我们来聊一聊BGP路由控制相关话 ...

  7. HCNP Routing&Switching之BGP基础

    前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...

  8. HCNP Routing&Switching之OSPF LSA更新规则和路由汇总

    前文我们了解了OSPF外部路由类型以及forwarding address字段的作用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15225673.html: ...

  9. HCNP Routing&Switching之BGP路由属性和优选规则

    前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html:今天我们来聊一聊BGP路由属性和选路规 ...

随机推荐

  1. 问题求解与程序设计(C重新回顾:个人版)一

    一.容易遗忘之转义字符 转义序列 含义 \n 换行 \t 水平制表 \\ 输出反斜杠 \a 响铃符 \'' 输出双引号 \' 输出单引号 \? 输出问号 \r 输出回车符(不换行,光标定位当前行的开始 ...

  2. STM32—TIMx实现编码器四倍频

    文章目录 一.储备知识 二.TIMx的编码器模式介绍 1.计数边沿设置 2.选择极性和使能 3.使能 4.计数方向 三.代码部分 一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频, ...

  3. 谈谈 Nginx 那点事【一】

    为什么突然决定总结Nginx ? 不知不觉8月份又要过完了,时间真是个无情的崽种. 写Nginx 首先,主要源于最近项目部署工作中和公司技术中心的人对接部署相关事宜流程太繁琐了.每个部门有各自的工作安 ...

  4. Linux修改Ip简单知识了解

    1. 在终端输入:vim /etc/sysconfig/network-scripts/ifcfg-etho(etho是指的安装centos的产生的网卡) 2.按i开始编辑,填写ip地址.子网掩码.网 ...

  5. Centos7上yum安装mongodb4-2

    vim /etc/yum.repos.d/mongodb-org-4.2.repo [mongodb-org-4.2] name=MongoDB Repository baseurl=https:// ...

  6. 两款轻量级服务器 Http-server && SimpleHTTPServer

    Http-server # 全局安装 npm install http-server -g # 启动服务 # 禁用缓存 http-server -c-1 # 在当前目录下的www启动服务器 http- ...

  7. uwp 中的音频开发

    xml code --------------------------------------------------- <UserControl x:Class="WinTest.H ...

  8. python创建字典多种方式

    1.创建空字典 >>> dic = {} >>> type(dic) <type 'dict'> 2.直接赋值创建 >>> dic = ...

  9. 微信小程序学习笔记四 页面的生命周期

    1. 生命周期 1.1 对应阶段说明 onLOad(Object query) 1.1 页面加载时触发, 一个页面只会调用一次, 可以在 onLoad的参数中获取打开当前页面路径中的参数 1.2 参数 ...

  10. Java如何调用C语言程序,JNI技术

    Java为什么要调用C语言编写的程序因为涉及操作系统底层的事件,Java是处理不了的,例如用户上传一个视频文件,需要后台给视频加上水印,或者后台分离视频流和音频流,这个事Java就做不了,只能交给C语 ...