【技术实现步骤摘要】
网络数据捕获方法和系统
本专利技术实施例涉及计算机操作系统领域,尤其涉及一种网络数据捕获方法和系统。
技术介绍
随着计算机和通信技术的发展,网络的应用迅速普及,与此同时,网络的安全性和可靠性日益受到人们的重视,安全性主要指网络上的信息不被窃取、泄露及破坏;可靠性主要指网络系统能够持续、稳定、可靠地运行,网络服务不被中断和破坏。网络数据包捕获、监听和分析技术是网络安全维护的一个基础技术,在当前流行的大多数网络流量及内容分析系统中,几乎都离不开网络数据的捕获。网络数据捕获是指将通信数据通过分光或者镜像得到一份副本,然后经过以太网卡(以下简称为网卡)将数据捕获进入到数据分析装置中。请参阅图1,为现有技术中一种网络数据捕获系统的结构示意图。该系统包括:网卡11、内核缓存区12、内核协议栈13、应用缓存区14和数据分析装置15,其中,应用缓存区14和数据分析装置15属于应用态。现有的网络数据捕获技术,一般是由网卡11捕获数据包,并通过数据拷贝将数据包传输到内核缓存区12中;内核缓存区12中的数据包利用内核协议栈13,通过多次数据拷贝逐级往上传递,具体地通过内核协议栈13的数据包套接字(packetsocket)将数据包拷贝一份,并将数据包逐级往上传递;数据分析装置15通过系统调用,将传递到上层的内存缓存区12中的数据包拷贝至应用缓存区14中。上述网络数据捕获技术存在的缺陷在于:从网卡捕获到数据包,并将数据包传递到数据分析装置的过程中,不仅存在多次数据拷贝,而且还需要系统调用,导致降低了数据包的传输效率,增加了系统和CPU(CentralProcessingUnit, ...
【技术保护点】
一种网络数据捕获方法,其特征在于,包括:网卡捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中;所述网卡通过外设部件互连接口直接内存访问PCI DMA控制器将所述接收先入先出队列中的数据包传输至内核态驱动中的预配置循环缓存区;所述网卡基于预设中断触发策略,向所述内核态驱动发送中断请求;所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,以使在所述内核态驱动根据所述中断请求进行中断响应的过程中,不被所述网卡发送的新的中断请求再次中断;并更新所述循环缓存区的描述符;以及恢复接收所述网卡发送的新的中断请求,在接收到新的中断请求时,返回根据所述新的中断请求执行所述中断响应操作;用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包;若是,则所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符;其中,所述内核态驱动和所述用户态数据分析装置通过内存映射技术共享所述循环缓存区;基于原子变量和原子操作的数据同步技术互斥使用所述循环缓存区。
【技术特征摘要】
1.一种网络数据捕获方法,其特征在于,包括:网卡捕获数据包,并将所述数据包缓存至网卡的接收先入先出队列中;所述网卡通过外设部件互连接口直接内存访问PCIDMA控制器将所述接收先入先出队列中的数据包传输至内核态驱动中的预配置循环缓存区;所述网卡基于预设中断触发策略,向所述内核态驱动发送中断请求;所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,以使在所述内核态驱动根据所述中断请求进行中断响应的过程中,不被所述网卡发送的新的中断请求再次中断;并更新所述循环缓存区的描述符;以及恢复接收所述网卡发送的新的中断请求,在接收到新的中断请求时,返回根据所述新的中断请求执行所述中断响应操作;用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包;若是,则所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符;其中,所述内核态驱动和所述用户态数据分析装置通过内存映射技术共享所述循环缓存区;基于原子变量和原子操作的数据同步技术互斥使用所述循环缓存区。2.根据权利要求1所述的方法,其特征在于,所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求,并更新所述循环缓存区的描述符,包括:所述内核态驱动根据所述中断请求,停止接收所述网卡发送的新的中断请求;更新所述循环缓存区的头指针和尾指针,以及使用计数和空闲计数;更新所述循环缓存区包含的缓存单元对应的状态。3.根据权利要求2所述的方法,其特征在于,所述循环缓存区包含的缓存单元对应的状态,包括:空闲状态、使用中状态和可用状态。4.根据权利要求3所述的方法,其特征在于,所述用户态数据分析装置从所述循环缓存区中提取数据包,并更新所述循环缓存区的描述符,包括:所述用户态数据分析装置判断循环缓存区的当前使用计数是否大于0;若是,则所述用户态数据分析装置从当前尾指针指向的、且当前状态为可用状态的缓存单元中提取数据包;所述用户态数据分析装置将提取数据包后的该缓存单元的状态更新为空闲状态,并更新所述循环缓存区的尾指针、以及使用计数和空闲计数,并返回判断循环缓存区的当前使用计数是否大于0的操作。5.根据权利要求1-4任一所述的方法,其特征在于,在用户态数据分析装置根据所述循环缓存区的当前描述符,判断所述循环缓存区是否有数据包之后,所述方法还包括:若否,则所述用户态数据分析装置按预设睡眠时长睡眠,并在所述预设睡眠时长之后,返回根据所述循环缓存区的当前描述符,判断所述循环缓存...
【专利技术属性】
技术研发人员:童克冬,陶小龙,
申请(专利权)人:北京锐安科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。