法律状态公告日
法律状态信息
法律状态
2018-03-13
授权
授权
2016-02-10
实质审查的生效 IPC(主分类):H04L29/06 申请日:20141230
实质审查的生效
2015-05-27
公开
公开
技术领域
本发明涉及无缝衔接的内核数据包捕获,属于计算机应用技术领域。
背景技术
随着计算机网络技术的飞速发展和扩大,特别是近年来Internet的迅猛发展,社会进入一个信息爆 炸的时代,世界也由于网络而变小,人们通过各种技术和工具使交流突破了空间的限制。全球范围内的网 络互联给人们的生活和工作带来了方便,人们正在享受网络技术带给我们美好生活。但同时某些不法分子 利用网络的漏洞非法入侵他人的主机系统,有的利用网络盗取他人个人信息,如网上银行账号密码等,对 他人财产安全造成了重大威胁。
目前我国正在进行大规模的现代化经济建设,需要使用自己的网络信息和信息安全系统来保护自己的 网络和信息系统,尤其是对于全国性大型计算机网络而言,必须将网络安全和信息安全放在非常重要的地 位上,而从长远角度看,这只能依靠我们自己解决。面对这种形势,研究并开发出一种能方便有效的实时 监控和捕获网络数据迫在眉睫。
尽管如此,在实现本发明的过程中,我们还是发现目前现有的技术中存在着不足之处:
在实时捕获大流量数据时常常发送丢包现象,而产生丢包的原因是数据包到来时缓冲区已经满了,那 么该数据包将被丢弃。至此,为了完整的抓取网络数据包,我们发明了“无缝衔接的内核数据包捕获技术”。
发明内容
为了能够支持千兆乃至万兆网络流量环境下实时的完整的捕获网络数据包而不产生丢包现象,本发明 实施例提供了无缝衔接的内核数据包捕获技术;以此大力提高超大网络流量下数据包捕获的可靠性和完整 性,所述技术方案如下:
1.无缝衔接的内核数据包捕获技术,其特征主要表现在内核无缝衔接的数据包捕获核心实现过程:(1) 向内核注册网络中间层驱动;(2)在网络中间层驱动发送与接收数据处理接口函数中,分块缓存数据 包,并且把分块数据存储在队列当中,每一块数据缓存设定为2M大小;(3)当数据流量峰值超过数 据包写入磁盘速度时,数据存储队列将会自动的从系统申请内存已满足存储需要,当数据流量峰值恢 复后,长时间未被使用的数据缓存块将会被释放,减少系统资源占用,数据存储队列将根据数据流量 的大小进行自动调整,无缝衔接,保证数据包顺利存储,规避因为内存池被占用而发生丢包的现象; (4)在内核中开启一个线程从缓存队列中读取分块数据,当超过指定数据包个数时将这些分块的数 据缓存按顺序写入磁盘文件,写入完成后将分块缓存区置为可用状态,以便之后新的数据到来时可以 重复使用这些缓存区,减少内存分配与释放的资源消耗,提高数据的存储效率;(5)将分块数据按PCAP 文件格式写入磁盘,至此,从网络接口到数据缓存再到磁盘文件的数据包捕获过程达到了无缝衔接; 其具体操作步骤如下:
(1)向内核注册网络中间层驱动
①创建好带有数据包捕获功能的网络中间层驱动;
②在网卡驱动程序与协议驱动程序之间注册并安装数据包捕获功能的中间层驱动程序;
(2)数据包缓存
①没有新的缓存:在网络中间层驱动回调函数中获取到网络数据包,接着在分块缓存队列中查找是否 有可用的缓存供当前数据包存储,如果没有,申请一块新的2M大小的内存,将当前数据包存储在这块缓 存当中,并且将新申请的分块内存加入到分块缓存队列当中;
②存在新的缓存:在分块缓存队列中查找是否有可用的缓存供当前数据包存储,如果存在,就将当前 数据包写入到这块缓存中;
(3)无缝衔接
①数据流量峰值超过存储速度:当网络流量峰值超过数据包写入磁盘速度时,缓存队列将会向系统以 当前缓存队列倍数大小申请新的内存以供数据存储,不因为流量过大而出现数据包被丢弃;
②数据流量恢复正常:当流量大小恢复正常速度时,系统会将之前流量峰值时新增的缓存块写入磁盘 文件,同时检测长时间未被使用的缓存块并进行资源释放,当流量缓存不够时又重新申请,达到数据包缓 存与网络接口无缝衔接,使数据存储保存良性循环;
(3)数据包存储
①数据包写入文件:当数据包接收个数超过指定的阈值时,将所有的分块数据写入到磁盘文件当中, 然后重置这些分块缓存为可用状态,减少内存分配带来的系统开销,提高数据存储效率;数据包写入磁盘 文件按照PCAP文件格式存储,每一个PCAP文件都有一个全局头,然后跟着是N(N>=0)个数据包组成的。 每个数据包又分为包头和包数据部分,其中数据包头中包含有该数据包被捕获的时间.数据包被捕获时间 的微秒数,数据包实际抓获并保存在文件中的长度以及数据包在网络中出现的长度;
(4)将分块数据按PCAP文件格式写入磁盘
①生成全局PCAP文件头:全局头包含4字节标识位,2字节主版本号,2字节次版本号,4字节区域 时间,4字节精确时间戳,4字节最大数据包长度,4字节链路层类型,总计24字节写入PCAP文件头;
②生成每一个数据包包头:包头包含4字节时间戳、4字节当前分组长度、4字节数据包长度,接着 是抓取到的数据包内容;
以下是对本发明的技术作进一步的说明:
所述的内核驱动,是指NDIS协议驱动,NDIS(Network Driver Interface Specification)是Windows 环境下的一个定义网络适配器(或者说成是管理网络适配器的驱动程序)与协议驱动(例如TCP/IP的实 现)之间通信的规范,而我们本发明技术所使用是协议驱动,协议驱动实现了网络协议栈,例如IPX/SPX 或TCP/IP,在一个或多个网络接口卡上提供它的服务。在协议驱动的上面,它为应用层客户程序服务;在 它的下面,它与一个或多个NIC驱动或中间层NDIS驱动连接,它是完成本发明技术的核心基础,它处理 网络上传输的数据包,并对经过指定网卡的数据包进行捕获。
所述的无缝衔接,是指网络接口、数据缓存、缓存写入磁盘文件这三者之间的处理速度无缝衔接,达 到供需平衡,是系统具有兼容所有网络流量的数据包捕获能力;
所述的数据包缓存,是指用来临时存储网络数据包而开辟的内存缓存区。缓存区以队列插入的方式来 保存分块的内存,数据包存储在分块内存中,当系统没有可用的分块内存时会申请新的2M分块内存,当 数据包个数达到指定写入磁盘要求时,数据包写入磁盘文件线程将会把要写入的数据包按照PCAP文件格 式写入磁盘,并且把这些分块缓存重置为可用状态,待下次新的数据包到来时不用重新分配内存,提高数 据的存储效率。
所述的数据统计,为了让用户直观的看到当前数据包流量以及数据捕获信息,在协议驱动中加入了对 抓包已用时间、经过网卡的数据包、经过网卡的数据包流量、过滤器捕获的数据包、过滤器捕获的数据包 流量、已写入到磁盘的数据量、未写入到磁盘的数据量、写入磁盘速度的统计。
附图说明:
图1为本发明技术的内核抓包驱动结构图。
具体实践方式:
实施例:
为了更好的理解本发明的技术方案,现结合附图中的图表就具体实施进行进一步详细描述如下:
(1)NDIS驱动结构
NDIS支持三种类型的网络驱动
①网络接口卡或NIC驱动:NIC驱动直接管理着网络接口卡(NIC)。NIC驱动接下边与硬件连接,从 上边表现为一个接口,该接口允许高层发送数据包到网络上,处理中断,重置NIC,停止NIC,查询 和设置驱动的运行特征。NIC驱动可以是小端口(miniport)或完全的NIC驱动(full NIC driver)。 ②中间层驱动:中间层驱动位于高层驱动(例如协议驱动)和小端口之间。对于高层驱动,中间层驱 动看起来像是小端口;对于小端口,中间层驱动看起来像协议驱动。一个中间层协议驱动可以位于另 一个中间层驱动之上,尽管这种分层可能对系统性能带来负面影响。开发中间层驱动的一个关键原因 是在现存的遗留协议驱动(legacy protocol driver)和小端口之间形成媒体的转化;
③传输驱动或协议驱动:协议驱动实现了网络协议栈,例如IPX/SPX或TCP/IP,在一个或多个网络接 口卡上提供它的服务。在协议驱动的上面,它为应用层客户程序服务;在它的下面,它与一个或多个 NIC驱动或中间层NDIS驱动连接;
(2)内核抓包驱动在WINDOWS中的位置
内核抓包驱动是一个协议驱动,从性能方面来看,这不是最好的选择,但是它合理地独立于MAC层并 且有权使用原始通信(raw traffic)。可以看出,协议驱动在NDIS之上,它与TCP/IP协议栈的实现在同 一层次。因此,它可以接收所有通过网卡的数据包而不影响其它正常的协议驱动数据;
(3)内核抓包驱动的结构——(如图1所示)
从图中可以看出为了避免一个数据包到来的时候缓冲区已经满了而导致数据包将被丢弃,我们采用了 动态小块内存循环分片与循环利用技术,当没有可用的小块缓存区时,向系统申请新的缓冲区,当数据包 从缓存区中被写入到磁盘时,重置这些缓冲区为可用状态,这样即提高了系统性能,又解决了无可用缓冲 区导致的丢包现象。
机译: 使用数据包捕获库和内核监视机制将网络流量与其操作系统进程相关联
机译: 数据包捕获程序,数据包捕获设备和数据包捕获方法
机译: 在包括捕获IP数据包的通信网络中对流量进行分类的方法和系统,并通过为每个捕获的数据包分配一个向量来表征这些捕获的数据包。