策略路由

策略路由技术背景

什么场景下会用到策略路由,假设网络组成架构如上图所示,现在该企业的出口连接了两个不同的运营商,这个企业对于自己内部访问外部的流量提出了以下需求,

希望网段1,或者说是某一个部门,它能够去访问ISP1,另外一个网段2或者另一个部门,它能够去访问ISP2,也就是说不同的网段或者不同的部门之间,它们通过不同的运营商去访问外部网络,而这样的一个需求,传统的路由技术是无法去实现的。如果是传统的路由,会形成一个怎样的后果,在路由选择方面,出口连接两个不同的运营商,它要想去访问外部网络,要么通过第一种情况实现流量的负载分担,但是无法把控不同的网段通过不同的运营商进行访问外网。

在这两个ISP中选择一个最优的路由,帮助实现内部用户访问外部网络,另一条这样的一条路径就空闲了,浪费了带宽,因此面对这样的一个特殊的需求,传统的路由选路由方面没有办法解决需求,因此需要使用策略路由技术来帮助去实现。

PBR介绍-基本概念

在策略路由里面所使用的一个工具叫Policy-Based Routing,也就是PBR,它能够根据到达报文的目的IP地址,进行一个数据包的匹配,然后再定义相关的动作,更改下一跳或者出接口。当然它匹配的条件有很多,不仅能够根据目的IP地址进行数据包的这样的一个匹配,同时也能够根据其它元素进行匹配,比如说源目MAC,VLAN号,源目端口号等等。也可以和ACL这样的一个匹配工具来进行一个联合使用。

PBR和前面学习的Route-Polocy路由策略非常相似。

现在假设外部的流量到达路由器A之后,想要去访问192.168.1.0这个网段,这个时候会发现路由器A关于192.168.1.0这个网段原本的下一跳是要经过10.0.12.2,也就是应该通过路由器B去访问该网段,现在在路由器A上面部署了PBR,将流量重定向到RTC,也就是说改变了数据流量的转发路径,从路由器A通过B访问的192.168.1.0网段,变成了从C去访问。这个时候是不是发现通过Route-Policy也能够实现。但是这个技术叫做策略路由,它和路由策略有什么不同呢?

路由器A上面路由表里面存在关于192.168.1.0这个目的网段的下一跳是10.0.12.2,然后通过策略路由改变其转发路径,这句话包含了怎样的陶然含义呢?路由策略可以改变路由的某种属性,同时通过查看路由表,会发现路由相关的属性已经发生了改变。如果通过路由策略去实现该功能的话,这个时候查看RTA的路由表,会发现它路由表里面关于192.168.1.0的下一跳变成了10.0.13.2。如果用策略路由去实现该功能的话,会发现路由器A上关于192.168.1.0的下一跳依然是10.0.12.2,并没有发生任何变化,但是数据流量的转发路径却发生了变化,并没有根据路由表的下一跳进行转发,而是直接通过C去访问了该目的的网段,这是为什么呢?

关于路由策略和策略路由的不同之处:路由器里面有几张核心表,第一个是路由表,其中路由表是属于控制层面的,实际上指导数据转发的是转发表。路由策略是直接作用在路由表上修改相关的路由信息,最终影响用户数据的流量转发,而策略路由,并不改变路由表里面的任何属性,它是直接作用于转发表上的,为数据转发制定了特殊的策略。当数据流量进行转发的时候,直接根据所制定的策略来指导数据转发,路由表里面相关的属性并不做任何改变。也就是说配置完策略路由之后,没有办法通过路由表去判断流量路径转发的这样一条路线。这也就是路由策略和策略路由的本质区别,一个是作用在控制平面,一个是作用在转发平面。 

PBR介绍-结构

和Route-Policy非常相似,每一个PBR它是由多个节点组成,每个节点之间的关系是“或”,一个节点下面可以包含多个条件语句,每个条件语句之间的关系是"与",同时它匹配的顺序也是按照编号从小到大顺序执行。匹配上某一节点之后执行相应的动作,然后就不再往下面进行接着匹配。

首先去创建一个PBR,名称就叫做PBR,然后该节点的匹配模式是permit或者是deny,后面再跟上该节点的索引号,然后在该节点下面去写相应的条件语句,if-match 可以跟上ACL,IP前缀列表,目的IP地址等等,最后去执行相应的操作,去修改它的下一跳或者出接口,这里可以类似参考Route-Policy。

PBR与路由策略区别

路由策略是作用在控制平面,从而对路由信息进行过滤,可以设置相关的属性,最直观的感受是路由表里面的信息发生了改变。而PBR它操作的对象是数据报文,也是作用在转发平面,这个时候看它的路由表里面的相关信息基本上是没有发生任何改变的,但是最后对数据进行转发的时候,会匹配相关的策略,然后执行相应的操作。可以用同一个拓扑图去部署Route-Policy以及PBR,最后对比一下实现相同的功能它们的路由表和转发表发生怎样的变化,来学习一下它们之间的区别。

PBR的分类

一种是关于接口的PBR ,一种是关于本地的PBR,接口的PBR需要注意一下,只针对转发的报文起作用,如果是本地始发的报文,基于接口的PBR是不生效的。 而本地的PBR是只针对本地始发的流量生效,对转发的流量是没有任何变化的,它们两个刚好是反过来的,一个是在系统视图下去调用本地的PBR,接口PBR是在接口下面去使用的。

原本该路由器依据路由表转发的数据流量路径是从1向上转发,但是在它的入接口配置了一个接口PBR,将流量转发路径更改为从它的右边转发出去,从而实现对流量路径的变迁。这是它针对转发流量去配置的接口PBR。第二个是基于本地始发的PBR,做了一个本地的一个PBR调用,原本它的数据流量基于路由表转发是从上转发,现在设置完之后会发现它从右边开始转发出去。应用起来也是非常简单。

它有一个非常典型的应用场景,在正常的情况下,在一个网络组成的成分中,不可能仅仅只有路由交换,同时还会涉及到其它的一些策略,比如说要对数据流量进行一个安全扫描,保证一个数据交互过程中没有任何病毒,这个时候内网可以通过旁挂部署方式,将防火墙挂在核心交换机旁边,这个时候会有一个什么问题,如果基于正常的路由表转发数据,从外面进来的流量交给核心交换机之后,会直接提交给用户终端,但是从外网回过来的数据包,一般需要进行病毒扫描,防止里面包含一些木马或者蠕虫病毒,这个时候可能使内网造成一些安全威胁,因此现在从核心交换机收到数据流量之后,因为通过旁挂式部署了防火墙,这个时候将流量牵引到防火墙上,使防火墙对于流量进行一体化扫描,当确保该流量安全,没有任何威胁的时候,再将流量迁回到核心交换机,然后核心交换机再层层递交给终端用户,这个时候就需要对流量做一个牵引的这样的一操作。常见的情况下在核心交换机的入口部分,做一个类似于接口的PBR,将流量重定向到防火墙上,对安全进行一个检查。

比如说企业出口连接了多个不同的运营商,现在要保证不同部门之间访问用户流量完全隔离开,比如说希望研发部通过左边的网络访问外部,可能左边的通信质量好一点,研发部又是一个比较重要的部门,希望右边平台工作人员通过右边访问外部,可能针对生产网络而言,生活这样的一个网络,没有必要要求链路质量那么高的要求,这样的时候可以在出口的路由器上面基于接口云调用PBR,抓取不同部门的这样的一个流量,然后执行不同的下一跳,业将它们的流量完全分开。保证生产和生活网络的流量进行分区。

MQC

MQC介绍(1)

MQC是指模块化QoS命令行,它是指将具有某类特征的数据流分为一类,它一共有三大模块组成,流分类,流行为,流策略。

什么叫流分类,MQD的定义,它是将具有某类共同特征的数据流分为一类,所谓的流分类指的就是将数据流进行分类,根据什么条件进行分类呢?比如说可以基于VLAN的标签,ACL,DSCP等等。

什么是流行为,为同一类的数据流提供相同的服务,这个服务指的是修改开销,修改下一跳等等。

最后将流分类和流行为绑定在一起,就成为了这样的一个流策略。在现网中MQC一般会和QoS结合 在一起去使用,

MQC介绍(2)

流策略是指将流分类和流行为绑定在一起,然后执行相应的动作。一条流策略,可以包含多个流分类和流行为,在同一个策略里面,它们的关系是"或"的关系。

MQC-流分类

可以基于二层匹配数据,可以基于三层匹配数据,或者其它选项,流分类所匹配的参数条件非常多。

MQC-流行为

流行为,包括报文过滤,重标记优选级,重定向,以及流量统计等等,PBR只能应用在三层设备上,而MQC,不仅可以用在三层设备上,也可以用在二层交换机上,也就是说关于MQC,它的应用范围实际上比PBR更加宽广一点。

MQC-流策略

流策略支持在接口上面去调用的,分别是入方向和出方向,比如在出接口上面去调用,数据流进入交换机SW1之后,根据所执行的一个策略,然后打上相应的标签,然后再从该接口发出去,给下一跳设备。第二是从入接口做相关的流策略,报文经过交换机之后,根据入接口里面的策略给它执行一个重定向,将它的数据流重定向到别的下一跳设备,而不依赖普通的数据转表转发。

流量过滤

需求背景

什么情况下会使用流量过滤,为了提高网络安全性,有时候需要对网络访问进行一个控制。比如说对于不想接收或者说不存在安全隐患的报文,这个时候应该拒绝接收的。或者说在一些企业里面,关于某些机密数据的访问,并不是所有人都能够正常进行获得的,这个时候可能就需要使用流量过滤来进行网络可达性这样的一个控制。

案例一,比如说在企业内部有一个服务器,这个服务器映射到外网,便得外网用户可以正常访问内部的服务器,这个是没有问题的,但是,如果外网用户通过访问内网的服务器,以内网服务器作为跳板,再来攻击内部网络,这样就可能存在安全隐患,因此它就避开了这样的一个安全检查,所以要丢弃一些不信任的报文。

案例二,在企业里面经常有些部门之间限制他们互相访问,或者说有些绝密的资料,并不是所有部门的人员都能够访问的,这一点也是关于可达性的一个要求。

流量过滤工具

可以使用Traffic-Fillter,也可以使用MQC技术,不同之处在于Traffic-Filter它匹配的一个工具比较少,基本上是根据ACL,方向是Inbound和Outbound,同时只能在接口视图下去调用。而MQC它所匹配流量的工具就非常多了,不仅有ACL,还包括其它的IP优选级,VLAN标签等等。同时MQC可以在多种视图下去调用它,也就是说应用起来更加广泛。

Traffic-Filter部署位置

Traffic-Filter它是在接口下去调用的,分为入方向和出方向,但是它在部署的位置方面是非常灵活的,关于数据流量是双向的选择,也就是说数据流量是有来有回这样一个过程。

比如税部门1和部门2之间去访问,先从部门1去访问部门2这样去流量上面,去实现一些Traffic-Filter的部署,可以在RTA的入方向,或者说RTA的出方向上面去部署相关的Traffic-Filter,来实现部门1无法访问部门2。同时也可以换一个方向,正常部门1发数据包给部门2,部门2接收了,还要回数据流量,因此可以针对反向流量来做一些过滤,反向流量方向,也可以在RTA相关出方向上面或者入方向去部署。也就是说Traffic-Filter的实际部署是根据流量的方向以及流量方向所对应的入接口和出接口上面进行一个选择,从而实现一个部署的正确性。

需求是部门1 2 3 网关在路由器RTA上面,现在要求在RTA上面去使用Traffic-Filter这个工具来限制部门2和部门3之间的互相访问。

首先在RTA上创建了一条ACL,ACL匹配的流量是来自于10.1.2.0/24这个网段,部门2的网段,目的网段是10.1.3.0/24,部门3的网段,执行的动作是deny。其它流量正常放行,然后在G0/0/2的接口上面去调用,调用的方向是outbound,然后去调用ACL 3000。

使用MQC过滤流量(1)

首先去匹配一条流量,10.1.2.0去访问10.1.3.0,然后执行相应的流行为,流分类如果满足ACL 3000,然后行为是deny,这个时候有一个非常重要的一点需要关注,如果在MQC里面去通过ACL去匹配数据流,ACL里面如果是用permit去匹配的,那么它执行的动作是由流行为中的deny或者permit去决定的。比如说ACL匹配的是permit,流行为中定义的是permit,就是允许他通过,如果流行为定义的是 deny,那就是拒绝通过。但是如果ACL中定义的规则为deny,那么流行为中无论定义了什么动作,这个报文都会被丢弃的,这一点又和将ACL和Route-Policy结合在一起去使用的方法又不一样了,因此,关于ACL里面的动作,以及它结合哪个工具,最后去判断它所执行的最终动作。

使用MQC过滤流量(2)

然后将流分类和流行为绑定在一起,就变成了相关的流策略,最后在相关的接口上去调用流策略,从而实现限制部门2和部门3之间的一个互访。

流量过滤与转发路径控制的基本配置

策略路由的基本配置

配置案例(1)

MQC的基本配置

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐