首页> 中国专利> 一种获得具有准确应用类型标识的网络流量数据集的方法

一种获得具有准确应用类型标识的网络流量数据集的方法

摘要

本发明公开了一种获得具有准确应用类型标识的网络流量数据集的方法,借助Windows系统的Hook机制以及为编程者提供的应用程序接口,使用简单的应用类型名称和应用类型标识与应用程序之间的简单映射,实现对数据包的对应、标识、提取、汇集,这个过程中应用类型能够被唯一标识,且不会受到网络运行参数的影响,从而,可以据此获得具有准确应用类型标识的网络流量数据集。

著录项

  • 公开/公告号CN102694733A

    专利类型发明专利

  • 公开/公告日2012-09-26

    原文格式PDF

  • 申请/专利权人 济南大学;

    申请/专利号CN201210184213.5

  • 申请日2012-06-06

  • 分类号H04L12/56;

  • 代理机构济南泉城专利商标事务所;

  • 代理人丁修亭

  • 地址 250022 山东省济南市市中区济微路106号

  • 入库时间 2023-12-18 06:42:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-03-25

    授权

    授权

  • 2012-11-21

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20120606

    实质审查的生效

  • 2012-09-26

    公开

    公开

说明书

技术领域

本发明涉及一种获得具有应用类型标识的网络流量数据集的方法。

背景技术

网络中混合流量的识别,对网络操作者和管理者而言,有至关重要的意义。为此,研究团体就混合流量提出了很多分类算法,如基于端口的分类算法和基于包检测的分类算法。由于越来越多的网络应用使用动态端口号和加密技术来发送数据包,因此随着网络应用中动态端口号和加密技术的逐步流行,使得基于端口号的和基于包检测的分类算法已经失去了有效性。基于机器学习的流量分类方法能够克服这种问题,便成为了研究的重点。但是,基于机器学习的流量分类算法需要具有准确应用类型标识的网络流量数据集来训练分类器和测试分类器。

具有准确应用类型标识的网络流量数据集的获得方法是目前流量分类领域中较为关注的热点,该领域的研究者提出了许多具有借鉴意义的方案。其中,Francesco Gringoli等人提出了一种用来为网络流量标记产生该网络流量的应用类型和协议标签的开放源代码的软件集合,命名为GT。

GT首先在用户主机上安装客户端守护进程,用来跟踪活动的网络socket的变化,记录这些变化然后发送到GT SQL Server数据库。再在网络边界处安装Traffic dump来采集网络流量并发送到用于处理流量的工具(即IPClass Tool)中。IPClass Tool接收Traffic dump在网络边界处采集的数据包,并且把其中的第一个数据包的采集时间和GT SQL Server中存储的数据包的记录时间进行比较,若有匹配结果,再对有应用类型标签的流量使用深度包检测技术以获得产生该流量的协议,然后把采集的相关数据和产生该数据的应用类型信息,以及协议信息一起存储到GT metadata中;若没有匹配结果,就不处理该数据包。

Francesco Gringoli等人的研究尽管得到具有应用类型标签和协议标签的数据,但是标记流量的应用类型需要根据数据包的时间戳来匹配GT SQL Server中存储信息的记录时间,有可能会因为时间的不同步性或者是延时而匹配错误。而且,产生该数据包的协议是使用深度包检测技术(Deep Packet Detection)来获得的,技术本身就会受到所使用的协议特征集的限制。该方案为数据标记应用类型和协议标签的处理过程是在离线的环境下完成的,使得该方案不能满足在线分类方法的应用。为此,有必要提出在线为流出用户主机的数据标记产生该数据的准确的应用类型标签和离线制作具有准确应用类型标识的网络流量数据集的研制方案。

为了使本领域的技术人员更有利于理解本文中相关的技术手段,在此对其中的某些手段和应用的对象进行一个说明,仅用于相关人员对本文所提出技术方案的延续性理解,不构成以下某些技术手段视为对现有技术的承认。

为调用socket请求流出主机的TCP数据包标记产生该数据包的应用类型标识,需要在主机上安装Socket Hook驱动和NDIS Hook驱动。在网络的边界处使用基于FPGA的流量采集器来采集经过网路边界的数据包,并且把采集的数据包发送到数据处理器。数据处理器首先把得到的数据包根据数据包的五元组(源IP地址、目的IP地址、源端口号、目的端口号和协议)信息整合成流,然后根据不同的需求制作不同的数据集。

在获得具有准确应用类型标签的网络流量数据集的过程中使用到的技术如下所述:

Socket Hook和NDIS Hook:

Hook的一种解释是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行Hook后,一旦发生Hook事件,对该事件进行Hook的程序就会受到系统的通知,这时程序就能在第一时间对该事件做出响应。

Hook的另一种解释则是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。也就是说,钩子机制允许应用程序截获处理Windows消息或特定事件。

套接字(Socket)接口是TCP/IP网络的API(Application Programming Interface,应用程序接口),而Windows Sockets,即WinSock是一个基于Socket模型的API, 它工作于 Windows 应用层,提供与底层传输协议无关的高层数据传输编程接口。在 Windows 系统中,使用 WinSock 接口为应用程序提供基于 TCP/IP 协议的网络访问服务,这些服务是由 Wsock32.DLL 动态链接库提供的函数库来完成的。

由以上说明可知,任何 Windows 基于 TCP/IP 的应用程序都必须通过 WinSock接口访问网络。应用程序接口让应用程序开发人员得以调用一组例程功能,而无需考虑其底层的源代码为何或理解其内工作机制的细节。由此我们可以通过Hook技术去控制 WinSock 接口,钩挂通过WinSock接口的数据包,进而分析钩挂的数据包,获得和数据包相关的五元组信息和产生该数据包的应用类型信息。

NDIS (Network Driver Interface Specification ,即网络驱动接口规范)有三种类型,分别是网络接口卡驱动程序、中间层驱动程序、高层协议驱动程序。

网络接口卡驱动程序(Miniport Network Interface Card Drivers) 管理网络接口卡,NIC(Network Interface Card,网络适配器,又称网卡)驱动程序在它的下端直接控制网络接口卡硬件,在它的上端提供一个较高层的驱动能够使用的接口,这个接口一般完成以下的一些任务:初始化网卡,停止网卡,发送和接收数据包,设置网卡的操作参数等等。

中间层驱动程序(Intermediate Protocol Driver)工作在协议驱动程序和微端口驱动程序之间。在高层的传输层驱动程序看来,中间层驱动程序像一个微端口驱动程序,而在底层的微端口驱动程序看来,它像一个协议驱动程序。使用中间层驱动程序的最主要的原因可能是在一个已经存在的传输层驱动程序和一个使用新的传输层驱动程序并不认识的媒体格式的微端口驱动程序中相互转换格式,即充当翻译的角色。

 高层的协议驱动程序(Upper Level Protocol Driver)像各种TCP/IP协议,一个协议驱动程序完成TDI(Transport Driver Interface,传输驱动程序接口)或者其他的应用程序可以识别的接口来为它的用户提供服务。这些驱动程序分配数据包,将用户发来的数据拷贝到数据包中,然后通过NDIS将数据包发送到低层的驱动程序,这个低层的驱动程序可能是中间层驱动程序,也可能是微端口驱动程序。当然,它在自己的下端也提供一个协议层接口,用来与低层驱动程序交互,其中最主要的功能就是接收由低层传来的数据包,这些通讯基本上都是由NDIS完成的。

承上所述,NDIS Hook就是基于中间层驱动实现的,通过钩挂协议驱动和小端口驱动交互的数据包,获取数据包的相关信息,进而得到产生该数据包的应用类型信息,并且把应用类型信息标记在数据包中。

FPGA( Field Programmable Gate Array),即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)、可编程逻辑器件PLD(Programmable Logic Device)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路ASIC领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。

使用FPGA器件设计数字电路,不仅可以简化设计过程,而且可以降低整个系统的体积和成本,增加系统的可靠性。它们无需花费传统意义下制造集成电路所需大量时间和精力,避免了投资风险,成为电子器件行业中发展最快的一族。使用FPGA器件设计数字系统电路的主要优点如下:

(1)设计灵活

使用FPGA器件,可以不被标准系列器件在逻辑功能上所限制,而且修改逻辑可在系统设计和使用过程的任一阶段中进行,并且只须通过对所用的FPGA器件进行重新编程即可完成,给系统设计提供了很大的灵活性。

(2)功能密集度大

功能密集度是指在给定的空间能集成的逻辑功能数量。可编程逻辑芯片内的组件门数高,一片FPGA可代替几片、几十片乃至上百片中小规模的数字集成电路芯片。用FPGA器件实现数字系统时用的芯片数量少,从而减少芯片的使用数目,减少印刷线路板面积和印刷线路板数目,最终导致系统规模的全面缩减。

(3)可靠性高

减少芯片和印刷板数目,不仅能缩小系统规模,而且它还极大的提高了系统的可靠性。具较高集成度的系统比用许多低集成度的标准组件设计的相同系统具有高得多的可靠性。使用FPGA器件减少了实现系统所需要的芯片数目,在印刷线路板上的引线以及焊点数量也随之减少,所以系统的可靠性得以提高。

(4)设计周期短

由于FPGA器件的可编程性和灵活性,用它来设计一个系统所需时间比传统方法大为缩短。FPGA器件集成度高,使用时印刷线路板电路布局布线简单。同时,在样机设计成功后,由于开发工具先进,自动化程度高,对其进行逻辑修改也十分简便迅速。因此,使用FPGA器件可大大缩短系统的设计周期,加快产品投放市场的速度,提高产品

的竞争能力.

(5)工作速度快

FPGA/CPLD器件的工作速度快,一般可以达到几百兆赫兹,远远大于软件。同时,使用FPGA器件后实现系统所需要的电路级数又少,因而整个系统的工作速度会得到提高。

(6)NetFPGA带有四个1G的RJ45接口和高速PCI总线,脱离主机进行工作而很少占用主机的资源,这样就可以使主机的工作效率得到很大的提高。

Webservice服务:

Webservice是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。简单地讲,Web服务是一个URL(Uniform / Universal Resource Locator,统一资源定位符,也称网页地址)资源,客户端可以通过编程方式请求得到它的服务,而不需要知道所请求的服务是怎样实现的。

Web服务的体现结构是基于Web服务提供者、Web服务请求者、Web服务中介者三个角色和发布、发现、绑定三个动作构建的。简单地说,Web服务提供者就是Web服务的拥有者,它耐心等待为其他服务和用户提供自己已有的功能;Web服务请求者就是Web服务功能的使用者,它利用SOAP(Simple Object Access Protocol,简单对象访问协议)消息向Web服务提供者发送请求以获得服务;Web服务中介者的作用是把一个Web服务请求者与合适的Web服务提供者联系在一起,它充当管理者的角色,一般是UDDI(Universal Description, Discovery and Integration,通用描述、发现与集成服务)。

这三个角色是根据逻辑关系划分的,在实际应用中,角色之间很可能有交叉:一个Web服务既可以是Web提供者,也可以是Web服务请求者,或者两者兼而有之。显示了Web服务角色之间的关系:其中,“发布”是为了让用户或其他服务知道某个Web服务的存在和相关信息;“查找(发现)”是为了找到合适的Web服务;“绑定”则是在提供者和请求之间建立某种联系。

基于Webservice的这种工作原理,提供了获得适合自己研究所需的数据集的接口。通过这个接口,服务请求者可以提出他们的要求,然后服务提供者根据这个要求来制作符合服务请求者的数据集,并把制作好的数据集发送给服务请求者。

发明内容

本发明对流出主机的数据包标记产生该数据包的应用类型标识,并在网络边界基于FPGA 进行采集,处理后得到具有应用类型标识的数据集,以获得具有准确应用类型标识的网络流量数据集。

为实现上述发明目的,本发明采用以下技术方案:

一种获得具有准确应用类型标识的网络流量数据集的方法,包括以下步骤: 

A.依据预定的用于映射应用程序的应用类型名称和应用类型标识创建一个Socket Hash表; 

B. 针对数据流,在应用程序使用套接字调用处理数据包时利用Hook机制截获相应的数据包,并至少获取其中的流出主机的数据包的应用类型名称和五元组信息;

C.进而,在所述Socket Hash表中匹配有步骤B获得的应用类型名称时,建立数据包与相应应用类型标识的对应关系;并依据该对应关系添加表项至预设的NDIS Hash表中;

D.在网络协议驱动与小端口驱动进行数据交互中利用Hook机制截获流出主机的所述数据包,在该数据包匹配有NDIS Hash表项时,标记该数据包;

E.在网络边界依据被标记数据包的五元组信息把具有相同应用类型标识的数据包汇聚流。

依据上述获得具有准确应用类型标识的网络流量数据集的方法,借助Windows系统的Hook机制以及为编程者提供的应用程序接口,使用简单的应用类型名称和应用类型标识与应用程序之间的简单映射,实现对数据包的对应、标识、提取、汇集,这个过程中应用类型能够被唯一标识,且不会受到网络运行参数的影响,从而,可以据此获得具有准确应用类型标识的网络流量数据集。

上述获得具有准确应用类型标识的网络流量数据集的方法,对所述步骤E获得的数据包汇聚流按照被定义的数据集依据定义把所述数据包汇聚流制作数据集以备调用。

上述获得具有准确应用类型标识的网络流量数据集的方法,还包括对所获得的数据集进行描述的步骤,被描述的内容连同数据集一同发布。

上述获得具有准确应用类型标识的网络流量数据集的方法,在制作数据集前还包括对数据进行过滤和隐私保护的步骤;

其中,过滤步骤是把数据流中数据包数目小于10或者持续时间小于0.01秒的数据流过滤掉;

隐私保护则是在采集到的数据含有IP地址时,把IP地址映射到内网的地址段内。

上述获得具有准确应用类型标识的网络流量数据集的方法,其通过Webservice接口对所述数据集进行定义。

上述获得具有准确应用类型标识的网络流量数据集的方法,在NDIS Hash表项中含有相应数据包的三元组。

上述获得具有准确应用类型标识的网络流量数据集的方法,一个过程是步骤B获得的信息通过直接存储器存取的方法写到内存中,而在步骤C中,当有以直接存储器存取操作时,使用除留余数法及开放地址法把所述信息写到所述NDIS Hash表中;

在此过程中,需将所操作的内存缓冲区对其他进程锁定。

上述获得具有准确应用类型标识的网络流量数据集的方法,在网络边界处,依据路由镜像,通过基于FPGA的接口卡获得所述数据包汇聚流。

上述获得具有准确应用类型标识的网络流量数据集的方法,对数据包的标记为标记在数据包的包头上,从而在数据包汇聚流时,通过对包头信息的识别获取所述应用类型标识。

上述获得具有准确应用类型标识的网络流量数据集的方法,对数据包的标记为标记在数据包的包头上,从而在数据包汇聚流时,通过对包头信息的识别获取所述应用类型标识。

上述获得具有准确应用类型标识的网络流量数据集的方法,在步骤C中,当Socket Hash表中没有匹配步骤B获得的应用类型名称时,统一标记为一个设定的应用类型标识。

附图说明

下面结合说明书附图详述本发明的技术方案,其中:

图1为依据本发明的一种获得具有准确应用类型标识的数据集的方法总体原理框图。

图2示出了基于主机为数据包标记准确应用类型标识的流程图。

图3为使用Socket Hook获得截获数据包的五元组和应用类型标识信息的流程图。

图4 为使用NDIS Hook为流出主机的数据包标记其产生该数据包的应用类型标识的流程图。

图5为一种硬件实现的数据包采集的流程图。

图6 为一种制作数据集的流程图。

图7 对一种采集的数据进行隐私处理和过虑处理的流程图。

图8 为一种静态生成特征数据集的流程图。

图9 为一种自动生成自定义数据集的流程图。

具体实施方式

参照说明书附图1,一种获得具有准确应用类型标识的网络流量数据集的方法总体上表现为首先是对数据包标记准确的应用类型标识,然后对被标记的数据包进行提取,在进一步改进的方案中可以对被提取的数据包制作网络流量数据集。因此,整体的方案可以这样来理解,其主要由三个部分组成,分别是数据包标识、数据采集和数据处理。

利用Hook机制,对流出主机的数据包进行标识,网络出口处通过路由器镜像,FPGA接口卡对镜像数据流进行采集、过滤,将带有标识的数据包发送到处理服务器进行处理,最后按要求生成所需的带有标识的数据集。

首先基于套接字调用(Socket call,也叫Socket请求,套接字请求)利用Hook机制对流出主机的TCP数据包标记产生该数据包的应用类型标识;接着在网络边界处使用基于FPGA的流量采集器来采集具有准确应用类型标识的网络流量,并将采集的具有准确应用类型标识的网络流量发送给数据处理器;数据处理器接收采集器发送过来的数据包后,先依据数据包的五元组信息和应用类型标识信息将数据包汇聚成流,然后再制作成适合不同分类算法要求的数据集,并且把制作好的数据集对外发布,如公布到国内外的数据平台上以便相关用户调用。

关于所述数据平台,如国内的科研数据共享平台和国外的UCI数据集平台。

应用对外开放定制自定义数据集的Webservice接口,用户可以通过该接口提出自定义数据集的特征和要求,后台的处理应用程序就会根据用户的需求来制作特定的数据集,并且把制作好的特定数据集发送给请求用户。

其中,网络边界的百科定义是网络的不安全的问题有哪些,以及对这些方面的采取的举措。其定义实际上是从网络的安全防护的角度进行描述的,更具体的描述为实现资源共享是网络出现的源动力,多年的发展使Internet成为现实,全世界的计算机都可以连成网络,连成一个整体;但计算机越多,网络规模越大,安全也成为问题。不管是通过ADSL连入Internet的家庭用户,还是通过专线连入Internet的企业用户,抑或通过专线连入专用网络的行业用户,都面临着越来越多的不安全因素影响。“划地而治”是现实中解决安全问题的通用办法,国家具有主权疆土、城市具有行政区域、企业具有自主园区、居民有个人空间,这些主体都具有物理空间和边界,把不同安全级别的网络相连接,就产生了网络边界。

关于套接字调用,多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,前面已经对此进行了较为详细的描述。

参照说明书附图2,在每台主机上应用Hook机制部署相关的模块,以截获相关的消息。这里涉及两部分内容,或者说两个接口,一个是套接字(Socket)一个是NDIS,分别命名为Socket Hook驱动和NDIS Hook驱动,作为如中间驱动程序的方式存在于系统中,依据中间驱动程序的特点进行相关信息的获取。对此背景技术部分也进行了清楚地描述,本领域的技术人员基于Hook机制容易实现。

通过这两个模块的部署,对Socket call流出主机的数据包标记产生该数据包的应用类型标识。Socket Hook驱动用来截获使用socket call传输的数据包,并且依据不同的应用获得该数据包的五元组信息和/或产生该数据包的应用类型信息,最好至少应含有应用类型信息;然后把获得的信息,如该数据包的五元组和应用类型标识信息传输给NDIS Hook驱动使用。

NDIS Hook驱动截获使用socket call传输的数据包,并且获得该数据包的三元组(源端口号、目的IP地址和目的端口号)信息,然后和Socket Hook驱动传过来的五元组和应用类型标识的对应关系进行比较,若有匹配信息就把应用类型标识标记在该数据包IP头部的TOS位上,若是无匹配信息,就不处理该数据包,直接传输该数据包。

相比于五元组,对于用户主机而言,本地IP地址是固定的,我们又是只处理TCP数据包,那么协议也就没有必要去进行比较了,该方案既节省了处理时间,也提高了内核处理的效率。

为了使本领域的技术人员更清楚地了解Socket Hook和NDIS Hook的实现,一个具体的实施流程如图3和图4所示。

在此之前,建立一个用于映射应用程序的应用类型名称和应用类型标识的文档,或者说一个应用类型名称和应用类型标识的对应关系表,如表1。依据该预先设立的表的调用,通过除留余数法及开放地址法创建一个Socket Hash表以备调用。

表1 应用类型名称和应用类型标识的对应关系表

应用类型名称应用类型标识Thunder.exe1eMule.exe2360se.exe3TheWorld.exe4QQ.exe5Msnmsgr.exe6其它255

参照说明书附图3,Socket Hook驱动获得调用Socket call传输的数据包的五元组和应用类型标识的对应关系的具体步骤如下所示:

a1. 在启动Socket Hook之前,已经建立了如前所述的表1或者一个可读的文档。

a2. 在启动Socket Hook时使用哈希表中的除留余数法及开放地址法把应用类型名称和应用类型标识的对应关系表中的所有内容存储到Socket Hash表中,表项如表1所示。

a3. 当应用程序执行Socket call处理数据包时,Socket Hook驱动就会截获该数据包,并且根据Socket call的接收函数和发送函数来判断数据包的流向,如果是流入主机的数据包就不进行处理,直接传输该数据包;如果是流出主机的数据包,转步骤a4。

a4. 对于流出主机的数据包,也就是需要标识的数据包,Socket Hook驱动就获取该数据包的五元组信息和产生该数据包的应用类型名称信息,进而根据应用类型名称和之前创建的Socket Hash表中的应用类型名称进行比较。

a5. 如果有匹配的信息,就建立该数据包的五元组和应用类型标识的对应关系,如果没有匹配的信息,就把该数据包的应用类型标识标记为255/

注:255是自定义的一个值,代表那些属于TCP连接的流出主机的数据包,但是产生该数据包的应用类型没有被加入到应用类型名称和应用类型标识的对应关系表中,也可以用来验证还存在那些未被标识的应用,从而进一步完善应用类型名称和应用类型标识的对应关系表。据此可以修改表1,为后续的修改提供基础。

另外,参见表1由于IP包头部的区分服务字段用八位来表示,除去TOS(terms of service,常翻译为服务条款、区分服务或者服务类型)位为0的不能使用和255被用来标记在应用类型名称和应用类型标识对应关系表中找不到的应用外,还有254个值能被用来标识应用类型,能够满足大多数的应用。

a6. Socket Hook驱动使用METHOD_IN_DIRECT的方式把数据包的五元组和应用类型标识的对应关系写入到内存中。

METHOD_IN_DIRECT的方式,即DMA(Direct Memory Accessory,直接内存存取方式,常称还有直接内存读取方式、直接内存模式),操作系统会将Socket Hook驱动调用的DeviceIoControl函数指定的缓冲区锁定,然后在内核模式地址下重新映射一段地址,直到内核模式下操作结束,操作系统才会释放这段缓冲区,这样可以避免内核驱动程序访问用户模式的内存地址,从而避免了数据在使用过程中被篡改。

另外,对于流出主机的数据包,可以进一步判断该数据包是否是TCP Transmission Control Protocol,传输控制协议)数据包,如果不是TCP数据包,就不进行任何处理,直接发送该数据包。如果是TCP数据包,Socket Hook驱动就提取该数据包的五元组信息和获得调用该Socket请求的应用类型名称。这种区分是否是TCP数据包的方式可以为后续的应用提供所需要的数据包。

参照说明书附图4,NDIS Hook驱动为流出主机的数据包标记准确的应用类型标识的具体步骤如下所示:

b1. 在启动NDIS Hook驱动时会首先初始化一个空的NDIS Hash表,当NDIS Hook驱动在内存中以METHOD_IN_DIRECT方式获取数据包的三元组和应用类型标识的信息时,就会使用哈希表中的除留余数法及开放地址法把数据包的三元组和应用类型标识写到NDIS Hash表中。

表2 数据包的三元组和应用类型标识的对应关系

哈希地址源端口号目的IP地址目的端口号应用类型标识41718327202.194.64.20080005562295858.254.134.211801130123727212.63.206.35424227223452119.118.15.225533180623812202.194.64.200800049322306460.217.235.148806

NDIS Hook提取三元组信息的原因:对于用户主机而言,本地IP地址是固定的,我们又是只处理TCP数据包,那么协议也就没有必要去进行比较了,该方案既节省了处理时间,也提高了内核处理的效率。把三元组信息和应用类型标识的对应信息存储到NDIS Hash表(即数据包的三元组和应用类型标识的对应关系表,如表2所示)中。

b2. 当NDIS Hook驱动截获调用socket call的数据包时,根据socket call的发送函数和接收函数来判断该数据包的流向,如果是流入主机的数据包,就不进行任何处理,直接传输该数据包。

b3. 如果是流出主机的数据包,就根据该来判断该数据包的类型:是结束TCP连接的数据包、请求建立TCP连接的数据包、还是TCP数据传输的数据包。

公知的,数据包TCP头部信息中的控制位在TCP头部中占了六位,分别是紧急指针:URG;确认标志:ACK;推送标志:PSH;复位标志:RST;同步标志:SYN;终止标志:FIN。

另外,如附图2所示,对数据包的标识并没有对数据流进行过滤,在Socket Hook驱动获得调用Socket call传输的数据包的五元组和应用类型标识的对应关系的具体操作后并没有区分哪些是流出主机的数据包,哪些不是。当然,由于上述过程已经对流出主机的数据包建立所需要的对应关系,因此,可以对没有对应关系的直接发送,对有对应关系的进行截获,因此,附图4中步骤“是否是流出主机的数据包”的判断可有可无,本领域的技术人员可以根据需要进行选择。

b4. 首先判断该数据包是否是结束TCP连接的数据包,如果是结束TCP连接的数据包,NDIS Hook驱动就获取该数据包的三元组信息,并且和NDIS Hash表中的三元组信息进行比较,如果有匹配的信息,就删除和该数据包的三元组信息相匹配的记录;如果无匹配的信息,就不做任何处理,直接传输该数据包。

这样,可以节省空间,对已经处理完毕的数据包的相关信息进行删除。

b5. 如果不是结束TCP连接的数据包,就判断该数据包是否是请求建立TCP连接的SYN数据包,如果是SYN数据包,就不做任何处理,直接传输该数据包。

b6. 如果不是请求建立TCP连接的SYN数据包,就判断该数据包是否是TCP数据传输的数据包,如果是带有负载的数据传输数据包,NDIS Hook驱动就获得该数据包的三元组信息,并且和NDIS Hash表中的三元组信息进行比较,如果无匹配信息,就不对该数据包做任何处理并且直接传输该数据包;如果有匹配信息,就把匹配结果的应用类型标识添加到服务类型区域(即TOS位)上,然后重新计算该数据的IP头部校验和,修改完成后就传输该数据包。

参照说明书附图5,采集具有准确应用类型标识的数据包,具体采集过程步骤如下所示:

c1. 在网络边界,应用基于FPGA的板卡采集数据包头部TOS位标识为非零的数据包头部信息,FPGA硬件以预定的数据包头格式识别此数据包的包头开始位。

通常情况下,数据包包头开始控制位为8个1序列。检测自定义的数据格式,当72b位宽中,前8b位8’hff时,表明NF2数据包的开始,此时设备就可以开始检测包头。

c2. 在下一个时钟周期内开始识别数据包的包头信息,通过识别的包头信息,可以知道该数据包的类型。因此,通过检查数据包的协议,标识位,TOS位和包头长度位等信息,若和要抓取的符合,则进入数据包的延时周期,若不符合,则将重新返回NF2开始位检测阶段。

c3. 提取包头长度信息,并送入包头提取控制模块,在这个模块中将根据具体的包头长度信息计算出所需要多少个时钟周期才能提起整个包头。通过该模块发出的控制信号对FIFO(First Input First Output,先入先出队列)和NF2结束位添加模块进行控制,连续上述过程,即可实现数据包包头信息的提取。

c4. NF2结束位添加模块是在包头提取控制模块的控制下对包头添加NF2格式的结束。当数据包的包头结束时,包头提取控制模块发出控制信号,添加NF2的结束标志。

c5. 延时模块主要是用来提供两个周期的数据延时,从而保存了包头的一部分信息,防止数据包一部分包头的丢失。

c6. FIFO模块主要是在包头提取控制模块的控制下对进入的数据包进行精确的控制,在这里只存储数据包的包头部分,数据包的负载部分将会被丢弃。FIFO中所存的只是数据包包头。

参考:中国CN102253909A发明专利申请公开公开的FPGA环境下多用途PCI接口及其数据传输方法与本文中基于FPGA的板卡除了接口部分不一样之外,控制部分和基本电路是一致的。

参照说明书附图6,对获得的数据进行处理预处理,使用预处理后的数据静态制作特征数据集和动态生成用户自定义的数据集的具体步骤如下所示:

d1. 数据处理器接收基于FPGA采集的具有准确应用类型标识的数据包,并把获得的数据存储到服务器的内存中。

d2. 从服务器的内存中读取数据包,并对数据包进行隐私处理和过滤掉老鼠流。

老鼠流在这里表示在一个流中数据包的数目很少或者是流的持续时间很短。由于老鼠流没有重要的、明确的统计特征,因此对老鼠流进行准确地分类是很困难的。除此之外,老鼠流在整体流量中所占的比例很少,对网络的影响也小,则不处理老鼠流。

在我们的研究中,我们规定小于10个数据包的流或者是持续时间小于0.0.1秒的流都被定义为老鼠流,即要被过滤掉的流。具体实现过程如图7所示。

d3. 把上面经过隐私处理和过滤处理的数据存储在服务器的硬盘空间中,然后该预处理(即隐私处理和过滤处理)的数据被用来静态制作特征数据集和动态生成用户自定义的数据集。

d4. 静态制作特征数据集就是按照已有的数据集制作方案来静态生成特征数据集,具体制作过程如图8所示,并且统计制作好的数据集中所包含的流的数目、包的数目、字节的数目和数据集中每种应用所占的比例等信息。然后,把这些有助于帮助用户选择适合自己研究的统计信息和制作好的数据集一同发布,方便有需要的用户进行使用。

d5. 动态生成自定义数据集就是当用户在我们已公布的数据集中搜索不到适合自己研究的数据集时,用户可以通过Webservice接口提供他们自定义数据集的要求,然后,后续处理程序就会根据用户的要求动态生成自定义的数据集,动态生成自定义数据集的具体过程如图9所示,并且把制作好的特定数据集通过Webservice接口传递给请求用户。

参照说明书附图7,对存储在服务器内存中的数据进行匿名处理和过滤处理的一个具体流程:

e1. 先从服务器的内存中获得存储的数据,然后把数据中具有相同五元组和TOS位值的数据包汇聚成流。

e2. 把数据包的数目小于10或者是持续时间小于0.0.1秒的流(即老鼠流)从数据中过滤掉。

e3. 为了保护用户的隐私,我们需要把采集的数据的IP地址进行伪装,因此,我们把每个流中数据包的IP地址映射到内网10.0.0.0~10.255.255.255之间的地址段内。在内存中,数据包的IP地址是以二进制形式存储,对数据包的IP地址采用密码学中移位代替密码(shift cipher)算法(移位代替密码是最简单的一种代替密码,其加密变换为:Ek(i)=i+k≡j(modq), ( 0≤i,j<q ) ①,K={k|0≤k<q} ②, 显然,移位代替密码的密钥空间中元素个数为q,其中k=0是恒等变换。其解密变换为:Dk(j)=Eq-k(j)≡i(modq) ③)进行伪装,然后把高八位使用二进制形式的00001010来代替,这样就能够保护用户的隐私。

把对IP地址进行伪装后的数据包存储到服务器的硬盘中,用来静态制作数据集,或者是实时地按照用户的自定义特征来动态生成用户自定义的数据集。

参照说明书附图8,静态制作特征数据集的具体实施步骤如下所述:

我们在此举例说明了两种静态制作的特征数据集:一种是以流为单位来制作的数据集,每个流为一条记录,每条记录包含22个统计特征(22个统计特征:发送的数据包中包大小的最大值、最小值、期望、方差,接收的数据包中包大小的最大值、最小值、期望、方差,发送的数据包的包间隔的最大值、最小值、期望、方差,接收的数据包中包间隔的最大值、最小值、期望、方差,接收的数据包的数目,发送的数据包的数目、接收数据包的速率,发送数据包的速率,发送字节的速率,接收字节的速率)的数据集;另一种是以数据包为单位,每个数据包为一条记录,每条记录包含15个特征(15个特征包含:IP包头的大小,TOS位的值,源IP地址,目的IP地址,IP包头中的标示符、标志、分段偏移、协议,TCP头部的大小,源端口号,目的端口号,窗口的大小,序列号,确认号,有效负载的大小)的数据集。

第一种数据集的具体制作步骤如下所示:

f1. 首先获得进行隐私处理和过滤处理的数据,在获得的数据中形成的流都是双向流,在制作数据集的过程中是计算每个流中单向(即分别计算发送数据包和接收数据包)数据包大小的最大值、最小值、期望、方差和计算每个流中单向数据包到达间隔时间的最大值、最小值、期望、方差。

f2. 计算每个流中发送数据包的数目和接收数据包的数目、发送数据包的速率和接收数据包的速率以及发送字节的速率和接收字节的速率。

f3. 把上面计算所得到数值量化为[0,1]的数值(注:量化的方法是统计每个特征的最大值,然后把每个流的该特征除最大值,得到的商即为[0,1]的数值)。

f4. 按照把每个流作为一个记录和需要计算的每个流的统计特征作为每个记录的元素的规则,我们把采集的数据制作成数据集。

f5. 统计制作好的数据集中的流的数目、包的数目、字节的数目和数据集中每种应用所占的比例等信息,然后把对数据集的统计信息和制作好的数据集一起发布在网上。

第二种数据集的具体制作流程如下所示:

g1. 获得经过隐私处理和过滤处理的数据,以数据包为单位来制作只包含数据包头部信息的数据集。

g2. 获得数据包IP头部的大小、TOS位的值、标识、标志、片偏移、协议、源IP地址、目的IP地址等信息。

g3. 获得数据包TCP头部的大小、源端口号、目的端口号、序号、确认号、窗口;还要获得包负载的大小。

g4. 以每个数据包为一个记录,所获得的特征信息为一个记录的元素来形成具有准确应用类型标签的网络流量数据集,然后发布该制作好的数据集。

参照说明书附图9,根据用户的需求来制作自定义数据集的一个具体实施流程如下所示:

h1. 用户提出所需要数据集的特征包括:以流为单位,每个流中包大小的最大值 、最小值、期望、方差,TCP窗口大小的最大值 、最小值、期望、方差,IP包头的大小,TCP头部的大小,带有特殊标记(特殊标记为:URG、 ACK、PSH、RST)的数据包个数,TOS位的值(代表产生该流的应用类型。为了便于对数据集的使用,用户还要求除了TOS位的值不变外,其余所有的特征值都量化为[0,1]之间的数值。

h2. 用户首先去发布的数据集中查询是否有适合自己研究的数据集,若果有合适的数据集,就获得该数据集进行自己的研究。如果没有适合的数据集,用户就会通过Webservice接口发送自己所需要数据集的特征信息。

h3. Webservice接口就把用户对数据集的自定义要求发送给后台的处理应用程序。

h4. 后台的处理应用程序接收Webservice接口发送来的请求,并且分析用户自定义数据集的要求,然后从服务器中获取进过预处理(预处理:经过隐私处理和过滤处理以及整合成流的处理)的数据。

h5. 计算每个流中包大小的最大值、最小值、期望、方差,计算每个流中TCP窗口大小的最大值、最小值、期望、方差,计算IP包头的大小、TCP头部的大小、带有特殊标记的数据包的数目。

h6. 把在步骤h5中计算所得的值都量化为[0,1]之间的数值。

h7. 获得IP头部中TOS位的值(代表了产生该流的应用程序的类型)。

h8. 该数据集以流为单位,把每个流作为一条记录,用户自定义的数据集的特征作为每个记录的元素,以该种定义规则来动态生成用户自定义的数据集,然后把动态生成的数据集经过Webservice接口发送给请求用户。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号