软件定义网络流表溢出脆弱性分析及防御方法
2019-09-16左雪鑫
左雪鑫
摘要:由于SDN交换机的流表容量非常有限,所以就存在比较严重的流表溢出脆弱问题,所以这就需要根据这一问题提出相应的防御措施,以保证网络的安全性。基于此,本文将在传统聚合算法的基础上提出了装箱优化算法,达到7控制交换机流表项数量的目的,实现7有效防御,以供参考借鉴。
关键词:软件定义网络 流表溢出 防御方法
引言
在互联网不断发展之下,原先的IP网络结构体系与TCP网络架构体系也都开始暴露出来越来越多的问题,比如说网络安全问题、扩展性受限、管理复杂等等。为了有效解决这些问题,各种新型网络技术渐渐发展起来。其中软件定义网络作为一种颠覆网络技术的创新形式将会是未来网络发展的重要方向。它的发展会将网络之中数据转发和控制之间存在的耦合关系解除掉,进而形成一种运用、转发与控制相互分离的一种架构,并通过相应的标准化接口带来了编程接口,使整体网络管理更加便捷。但是其交换机发展却存在相应的性能问题,比如流表容量不足,如果有人对其交换机进行使用大量伪造的数据包进行攻击的话,就会导致整个交换机出现流表溢出的问题,最终产生非常严重的后果。对此,这就需要对其脆弱性和相应的防御措施进行分析,以维护其交换机的安全性。
一、脆弱性
(一)原因
当下商用的软件定义网络其交换机之中的流表基本都是使用TCAM缓存所制,它的成本极高,就导致交换机之中的流表容量十分有限。比如,NEC公司的某交换机其流表容量才只能达到750条,就算是思科公司的某交换机其流表容量也才能够达到2000条。一般该设备在处理网络通信的时候都非常繁忙,其网络流速一般会达到每秒5 X103到10 X103条这明显大于其流表的基本容量不但如此,负载均衡以及防火墙等网络所需要使用到的该项容量也要比当下开发的交换机流表容量大得多,所以能够发现该项流量是不能满足基本需求的。
在进行网络运行的时候,这种交换机一般都要依照每条流的特点给流表之中写入相应的规则。如果网络流量非常大的时候,这种机制就会导致流表完全被占用,进而如果有新型网络流到来的话,如果其网络流在整个流表之中并没有相应的规则可以处理,依照相关协议,该项交换机就应该要和控制器实施频繁的交互,把网络流信息控制住并给控制器发送过去,然后再由控制器下发新型的流表项。这时候控制器和交换机就会因为彼此之间的频繁交流使整体网络的性能降低.情况严重的话还有可能会导致整个交换机所控制在数据平面当中的网络完全失控。
(二)后果
如果出现上述情况,这时候攻击人员就能够在产生随机地址与伪造源地址的网络流表之中加大各种流表项,进而使流表出现溢出的现象。这时候就会导致整个交换机之中数据包的转发特性出现下降情况,并出现流表溢出攻击。根据这一严重缺陷,就可以轻易达到攻击交换机拒绝服务的目的。除此之外,使用网络流量生成、注入等路径,还可以有效推断出来交换机的流表容量以及在网络当中的实时的流量特点,从而泄露网络信息。
二、防御措施
根据上述脆弱性问题,具体的防御方式可以通过在装箱优化基础上的路由规则聚合算法来实现。这一算法是在基数树的路由聚合算法基础上发展起来的,并且应用到了装箱优化的方式,使得整个流表項的聚合效率被显著提升。在使用该算法之后能够将节约交换机之中的容量消耗,解决其脆弱性的问题,让攻击人员的难度得以有效加大,实现了基本的防御目的。
(一)在基数树基础上
在IP网络的不断发展之下,其路由规则数量也在不断增长,在互联网之中其FIB路由规则已经达到了数十万条,这一发展给网络扩展性的发展带来了重大问题。为了有效降低交换机之中有关FIB的空间损耗.促进网络的扩展性,就需要加大对流量表项聚合问题的研究。
这一基本算法是非常经典的一种算法,其中基数树本身是二叉树,具体组成部分包含有匹配前缀和下跳网络地址。流表项在构建基数树的时候会先把前者转变成为二进制的字符串,接下来再对其实施遍历,倘若其某位是l的话,那么还应该要将右节点插入进去,一直不断进行重复一直到其字符串的遍历工作完成。这一算法经常运用到的聚合方式包含有兄弟、父子、引入额外路由空间的非兄弟等节点聚合,但是在该算法之中,如果没有在聚合完成之后优化其路由规则的转发地质,那么就可能会降低聚合效率,进而使防御效果降低。
(二)在装箱优化基础上
在这类网络之中,管理者能够在控制器当中的路由规则管理算法的作用下,实施调整其路由规则的转发地址,进而使整体的聚合效率得以提升,所以在这样的思路基础上,在装箱优化之上其算法基本包含有三个基本程序。
首先,将流表项的规则组划分出来。通过上述算法聚合之后所获得的流表项节点,将其目的地址之中归属于同一网络应用并未其匹配前缀无法聚合的各个节点划归成一个规则组,最后获得包括有不同数量节点的若干个流表项规则组。
其次,将上述规则组的转发地址进行调整。具体把其流表项转发目标的网络设备当做是箱体,把这一设备的流量负载和处理性能作为整个箱体的容积限制,根据路由规则组之中所涵盖的节点数,把每一个流表项规则组当做是规格各异的物体,就能够将其彼此之间的问题转变成为装箱优化问题,然后再在这一基础上进行求解,最后获得调整之后的转发地址。
最后,依照上述获得的转发地址,让其指向到调整之后的目标设备,再应用在基数树基础上的算法实施二次聚合,以此让转发地址改变之后所产生的新型流表项规则组当中的流表项数量得以降低。
这一需要重点关注的是,这一方式是非常经典的一种组合优化问题,也就是在多项式时间之中不能获得最优解,所以这一问题的求解基本都是运用近似启发式的算法这样一来就能够最快获得解。其算法一般包含有最佳适应、下次适应、降序最佳等等。就拿降序最佳来求解,其具体过程为:先对所有路由规则之中所涵盖的转发总流量进行统计,再运用这一算法求解其装箱问题,并对所有规则组转发的总流量实施降序排序,将剩下的设备进行检查,最终寻找到一个可以承载当下流量以及之后剩余资源最少的设备,再有效调整这些流量的下跳网络地址指向到这一设备,不然就将流量引入到一个资源没有被占用的新型设备之中,最后再依照求解的结果调整所有路由规则组之中的所有节点的下跳网络地址。
(三)防御方式
依照上述算法,其具体防御步骤有四项:第一,对交换机流表占用状况实施实时监测,如果超过了既定值,还应该要将路由聚合启动开;第二,在该交换机之中,把流表项构建成为基数树,再运用起算法对路由规则实施第一次聚合;第三,把聚合完成后的流表项根据前缀与后缀,划归流表项规则组,再使用装箱优化的算法计算调整其规则组和转发目标设备之间的相应转发关系,以此进行二次聚合;第四,依照最终的结果下发更新相应的路由规则。
三、结束语
上述主要对其流表溢出的相关脆弱性问题和后果进行了分析,并给出了相应的防御思路。总的来说,在其防御方式之中,应用的装箱优化算法主要应用了这软件定义网络的基本特点,使在传统算法的基础上,运用装箱优化实现了再次聚合流表。如果网络使用数量比较多,或者是拓扑比较复杂的话,上述方式可能在实践应用的时候会比较难,所以往后还应该要继续研究更加宽松的聚合方式,得到更加便利的防御方式。
参考文献
[1]宛考,罗雪峰,江勇,etal.软件定义网络系统中面向流的调度算法[J].计算机学报,2016,39(6):1208—1223.
[2]李新明,李艺,刘东.软件脆弱性影响分析模型[J].计算机工程,20LO,36(17):63—65.
[3]赵鹏,基于SDN'的动态网络防御系统的设计与实现[D].电子科技大学,20L7.
[4]唐菀.SDN数据中心网络基于流表项转换的流表调度优化[J].中南民族大学学报(自然科学版),20—7,36(3):111-ll7.