网络数据捕获方法和系统技术方案

技术编号:11263168 阅读:46 留言:0更新日期:2015-04-08 08:34
本发明专利技术实施例提供一种网络数据捕获方法和系统。该方法包括:网卡捕获数据包,并缓存至网卡的接收先入先出队列中;通过PCI DMA控制器将队列中的数据包传输至内核态驱动中的预配置循环缓存区;基于预设中断触发策略,向内核态驱动发送中断请求;内核态驱动根据中断请求,停止接收所述网卡发送的新的中断请求,并更新循环缓存区的描述符,以及恢复接收所述网卡发送的新的中断请求;用户态数据分析装置根据循环缓存区的当前描述符,判断到循环缓存区有数据包时,提取数据包,并更新循环缓存区的描述符,实现了整个传输过程零拷贝,且无需系统调用,节约了CPU资源,提高了数据包的传输效率。

【技术实现步骤摘要】
网络数据捕获方法和系统
本专利技术实施例涉及计算机操作系统领域,尤其涉及一种网络数据捕获方法和系统。
技术介绍
随着计算机和通信技术的发展,网络的应用迅速普及,与此同时,网络的安全性和可靠性日益受到人们的重视,安全性主要指网络上的信息不被窃取、泄露及破坏;可靠性主要指网络系统能够持续、稳定、可靠地运行,网络服务不被中断和破坏。网络数据包捕获、监听和分析技术是网络安全维护的一个基础技术,在当前流行的大多数网络流量及内容分析系统中,几乎都离不开网络数据的捕获。网络数据捕获是指将通信数据通过分光或者镜像得到一份副本,然后经过以太网卡(以下简称为网卡)将数据捕获进入到数据分析装置中。请参阅图1,为现有技术中一种网络数据捕获系统的结构示意图。该系统包括:网卡11、内核缓存区12、内核协议栈13、应用缓存区14和数据分析装置15,其中,应用缓存区14和数据分析装置15属于应用态。现有的网络数据捕获技术,一般是由网卡11捕获数据包,并通过数据拷贝将数据包传输到内核缓存区12中;内核缓存区12中的数据包利用内核协议栈13,通过多次数据拷贝逐级往上传递,具体地通过内核协议栈13的数据包套接字(packetsocket)将数据包拷贝一份,并将数据包逐级往上传递;数据分析装置15通过系统调用,将传递到上层的内存缓存区12中的数据包拷贝至应用缓存区14中。上述网络数据捕获技术存在的缺陷在于:从网卡捕获到数据包,并将数据包传递到数据分析装置的过程中,不仅存在多次数据拷贝,而且还需要系统调用,导致降低了数据包的传输效率,增加了系统和CPU(CentralProcessingUnit,中央处理器)资源开销。
技术实现思路
本专利技术实施例提供一种网络数据捕获方法和系统,以减少系统和CPU资源开销,并提高数据包的传输效率。第一方面,本专利技术实施例提供了一种网络数据捕获方法,包括:网卡捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中;所述网卡通过外设部件互连接口直接内存访问PCIDMA控制器将所述接收先入先出队列中的数据包传输至内核态驱动中的预配置循环缓存区;所述网卡基于预设中断触发策略,向所述内核态驱动发送中断请求;所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,以使在所述内核态驱动根据所述中断请求进行中断响应的过程中,不被所述网卡发送的新的中断请求再次中断;并更新所述循环缓存区的描述符;以及恢复接收所述网卡发送的新的中断请求,在接收到新的中断请求时,返回根据所述新的中断请求执行所述中断响应操作;用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包;若是,则所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符;其中,所述内核态驱动和所述用户态数据分析装置通过内存映射技术共享所述循环缓存区;基于原子变量和原子操作的数据同步技术互斥使用所述循环缓存区。第二方面,本专利技术实施例提供了一种网络数据捕获系统,所述系统包括:网卡、内核态驱动和用户态数据分析装置;所述网卡用于捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中;还用于通过外设部件互连接口直接内存访问PCIDMA控制器将所述接收先入先出队列中的数据包传输至内核态驱动中的预配置循环缓存区;还用于基于预设中断触发策略,向所述内核态驱动发送中断请求;所述内核态驱动用于预先配置循环缓存区;还用于根据所述网卡发送的所述中断请求,停止接收所述网卡发送的新的中断请求,以使在所述内核态驱动根据所述中断请求进行中断响应的过程中,不被所述网卡发送的新的中断请求再次中断;并更新所述循环缓存区的描述符;所述用户态数据分析装置用于根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包;若是,则从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符;以及恢复接收所述网卡发送的新的中断请求,在接收到新的中断请求时,返回根据所述新的中断请求执行所述中断响应操作;其中,所述内核态驱动和所述用户态数据分析装置通过内存映射技术共享所述循环缓存区;基于原子变量和原子操作的数据同步技术互斥使用所述循环缓存区。本专利技术实施例提供的网络数据捕获方法和系统,通过外设部件互连接口为网卡提供连接接口,基于直接内存访问技术,将网卡的接收先入先出队列中数据包传输至内核态驱动中的预配置循环缓存区,仅需事先安排的少量CPU资源即可自动完成数据包从网卡到内核态驱动的传输,因此在大量数据包传输过程中节约了大量的CPU资源;通过内核态驱动和用户态数据分析装置共享及互斥使用循环缓存区,一方面,实现用户态和内核态之间共享循环缓存区以及循环缓存区的描述符,避免数据从内核态拷贝到用户态的大量拷贝过程,从而进一步节约了大量CPU资源,另一方面,保证用户态和内核态在循环缓存区的描述符的操作上是同步的,因此,解决了数据的生产和消费之间的同步问题,并且在数据包从网卡到内核态控制器的循环缓存区,以及从循环缓存区到用户态数据分析装置的整个过程中零拷贝,用户态不需要系统调用就可以访问到内核态捕获到的数据包,从而避免了不必要的系统调用和由内核同时服务于多个网卡时产生的上下文切换开销,同时提高了数据包的传输效率。附图说明为了更清楚地说明本专利技术,下面将对本专利技术中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中一种网络数据捕获系统的结构示意图;图2a为本专利技术实施例一提供的一种网络数据捕获方法的流程图;图2b为本专利技术实施例一提供的网络数据捕获方法中一种用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符的方法流程图;图2c为本专利技术实施例一提供的一种网卡、内核态驱动和用户态数据分析装置共享循环缓存区的示意图;图3为本专利技术实施例二提供的一种网络数据捕获方法的流程图;图4为本专利技术实施例三提供的一种网络数据捕获系统的结构示意图;图5为本专利技术实施例四提供的一种网络数据捕获系统的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施例中的技术方案作进一步详细描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。可以理解的是,此处所描述的具体实施例仅用于解释本专利技术,而非对本专利技术的限定,基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部内容。实施例一请参阅图2a,为本专利技术实施例一提供的一种网络数据捕获方法的流程图。本专利技术实施例的方法适用于网络数据捕获系统,该系统包括:网卡、内核态驱动和用户态数据分析装置。其中,网卡属于硬件层,内核态驱动属于内核态,用户态数据分析装置属于用户态。该方法包括:步骤210~步骤260。步骤210、网卡捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中。其中,接收先入先出队列(RXFirstInputFirstOutput,RXFIFO)用于接收网卡捕获到的数据包。RX代表接收,先入先出队列(FIFO)是一种先进先出的本文档来自技高网
...
网络数据捕获方法和系统

【技术保护点】
一种网络数据捕获方法,其特征在于,包括:网卡捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中;所述网卡通过外设部件互连接口直接内存访问PCI DMA控制器将所述接收先入先出队列中的数据包传输至内核态驱动中的预配置循环缓存区;所述网卡基于预设中断触发策略,向所述内核态驱动发送中断请求;所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,以使在所述内核态驱动根据所述中断请求进行中断响应的过程中,不被所述网卡发送的新的中断请求再次中断;并更新所述循环缓存区的描述符;以及恢复接收所述网卡发送的新的中断请求,在接收到新的中断请求时,返回根据所述新的中断请求执行所述中断响应操作;用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包;若是,则所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符;其中,所述内核态驱动和所述用户态数据分析装置通过内存映射技术共享所述循环缓存区;基于原子变量和原子操作的数据同步技术互斥使用所述循环缓存区。

【技术特征摘要】
1.一种网络数据捕获方法,其特征在于,包括:网卡捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中;所述网卡通过外设部件互连接口直接内存访问PCIDMA控制器将所述接收先入先出队列中的数据包传输至内核态驱动中的预配置循环缓存区;所述网卡基于预设中断触发策略,向所述内核态驱动发送中断请求;所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,以使在所述内核态驱动根据所述中断请求进行中断响应的过程中,不被所述网卡发送的新的中断请求再次中断;并更新所述循环缓存区的描述符;以及恢复接收所述网卡发送的新的中断请求,在接收到新的中断请求时,返回根据所述新的中断请求执行所述中断响应操作;用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包;若是,则所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符;其中,所述内核态驱动和所述用户态数据分析装置通过内存映射技术共享所述循环缓存区;基于原子变量和原子操作的数据同步技术互斥使用所述循环缓存区。2.根据权利要求1所述的方法,其特征在于,所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,并更新所述循环缓存区的描述符,包括:所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求;更新所述循环缓存区的头指针和尾指针,以及使用计数和空闲计数;更新所述循环缓存区包含的缓存单元对应的状态。3.根据权利要求2所述的方法,其特征在于,所述循环缓存区包含的缓存单元对应的状态,包括:空闲状态、使用中状态和可用状态。4.根据权利要求3所述的方法,其特征在于,所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符,包括:所述用户态数据分析装置判断循环缓存区的当前使用计数是否大于0;若是,则所述用户态数据分析装置从当前尾指针指向的、且当前状态为可用状态的缓存单元中提取数据包;所述用户态数据分析装置将提取数据包后的该缓存单元的状态更新为空闲状态,并更新所述循环缓存区的尾指针、以及使用计数和空闲计数,并返回判断循环缓存区的当前使用计数是否大于0的操作。5.根据权利要求1-4任一所述的方法,其特征在于,在用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包之后,所述方法还包括:若否,则所述用户态数据分析装置按预设睡眠时长睡眠,并在所述预设睡眠时长之后,返回根据所述循环缓存区的当前描述符,判断所述循环缓存...

【专利技术属性】
技术研发人员:童克冬陶小龙
申请(专利权)人:北京锐安科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1