论文部分内容阅读
网络流量测量是网络管理中的一个重要组成部分,在网络安全攻防领域具有重要的作用,诸如网络拥塞、DDOS攻击、蠕虫病毒等网络事件均可通过对网络流量的有效检测进识别。但随着网络数据的爆发式增长,以及网络传输速率的巨大提升,传统的网络流量检测方式面临着许多问题,在有限的存储空间下进行准确的流量统计成为一项挑战。而就数据中心这类特殊的网络来看,其除了会产生规模非常大的海量网络流量数据外,数据中心网络的流量分布特点也使得传统的流量检测方法具有极大的局限性。在互联网发展的早期,服务器主要用于对外提供服务,不同的服务业务又通过VLAN或安全区隔离成不同分区,所以这每一个分区都集中了该服务所需要的计算、存储等资源,不同分区之间有明显的界限,相互之间较难进行访问。所以传统的数据中心网络中,主要以客户端与服务器之间的南北向流量居多。在这种情况下,传统的网络流量检测方案往往是在数据中心网络的边界网关,或进出口交换机上部署相应的检测探针进行网络流的检测。而随着诸如大数据、云计算等高速流量网络应用的不断发展,传统的数据中心网络资源利用率低下的问题日益突出,为此出现了虚拟化、云计算管理等新技术,通过将各个分区中的资源进行池化,以达到充分利用网络中软硬件资源的目的。而在这个过程中往往涉及诸如虚拟机迁移、数据同步备份、协同计算等操作,这些操作极大的增加了数据中心网络内及数据中心之间的主机通讯,大幅度增加了数据中心网络的东西向流量。而传统的网络流量测量方案由于仅仅是把检测探针部署在网络出口边界上,所以只能够监听网络的南北向流量,无法满足对日益增长的东西向流量的检测需求,对于数据中心内部的网络,更是无法发现恶意的内网入侵,和网络故障等问题。即使是在数据中心网络中的关键节点部署硬件流量探针,也存在着硬件设备的部署成本较高,难以对全网进行部署的问题。所以就需要能够使用软件化,低成本的流量检测算法以部署到数据中心网络中的多核主机上,让数据中心主机在进行正常数据处理的同时,实现对网络流量的高速精确的测量。为此不少专家学者对网络流算法进行了深入的研究,并取得了丰富的研究成果,出现了基于数据包采样的测量算法,基于流的计数器的测量算法以及基于流的Sketch的测量算法这三大类数据流测量算法。而在这主流的三大类网络流算法中,以CountMin Sketch与Count Sketch为代表的、概要性计数的Sketch数据流算法由于能够能够充分地利用有限的内存资源,并提供较高的计算精度而备受关注,并被广泛应用于大数据,网络安全,流量工程等领域。虽然目前的大部分算法已经拥有不错的测量精度,但仍然存在着两大方面的问题,一是对于网络流数据的处理来说,这主流的三类算法各有利弊,即使是基于流的Sketch也面临着内存利用率不太高效,处理速度仍有提升空间的问题。二是对于网络中的各种突发事件,一般的网络流算法往往只能够提供非常有限的网络流度量信息,如果需要对多个网络事件进行检测将面临需要引入更多的数据流算法的问题。为此,本文主要探讨如何设计在数据中心这类高速网络环境中进行高效流量测量的通用算法,以已有的一些数据流算法为基础,首先提出了一种高度压缩的共享计数器结构CountMin virtual active counter(CM-VAC),以进一步适应有限存储空间与高速流量测量的需求,然后基于Univmon的论文思想进行改进并设计了本文的CMUnivmon算法以实现对网络流量的多个指标的检测,从而提升本文数据流算法的通用性。本文的主要贡献包括:(1)针对目前一些网络流算法的内存空间利用率低,处理速度仍可以进一步提升的问题,本文结合已有的 CountMin Sketch(CM)与 Virtual Active Counters(VAC)等算法,基于其中的关键技术设计实现了一种最小虚拟活跃计数器算法(CountMin virtual active counter,CM-VAC)。该算法通过将32位的计数器压缩到8位存储空间,并让多个流共享同一个计数器以减少算法所需要使用的内存空间。同时,算法概率性的更新计数器以及哈希函数值的分段使用也极大的提升了算法对网络流数据的插入与查询速率。(2)为了能够有效地检测出网络中层出不穷的异常流量事件,针对目前大部分网络流算法只能够聚焦于网络流量监测中的某一个测度的问题,本文在原有的Univmon算法结构上进行改进与设计,实现了一种内存空间十分紧凑的通用Sketch算法(Compressed memory Universal Monitoring,CMUnivmon)。该算法通过底层的 CM-VAC结构来统计网络中的整体流量信息,借助算法中原有的Heavy hitters堆作为热点过滤器从而进一步提升算法的插入速度与对Heavy hitters事件的检测精度。通过对不同流矩值的计算以给管理人员提供更多的数据流度量信息。(3)在理论分析的基础上,本文借助CAIDA真实的数据流trace信息对本文中提出的所有算法进行了性能测试,通过实验验证了本文算法的优越性。在文章的最后部分,本文基于所提出的通用流矩算法CMUnivmon,结合因特尔的DPDK开发套件,MySQL数据库与Flask网络框架设计了一个简单的基于数据中心主机的网络流量测量原型系统,通过搭建简单的流量仿真测试环境,说明本文提出的算法在真实网络环境中应用的可行性。