著录项信息
| 专利名称 | 基于并行处理的TCP协议及其数据还原装置及方法 |
| 申请号 | CN200910071486.7 | 申请日期 | 2009-03-04 |
| 法律状态 | 暂无 | 申报国家 | 中国 |
| 公开/公告日 | 2009-07-22 | 公开/公告号 | CN101488960 |
| 优先权 | 暂无 | 优先权号 | 暂无 |
| 主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6;;;H;0;4;L;2;9;/;0;8;;;H;0;4;L;1;2;/;5;6查看分类表>
|
| 申请人 | 哈尔滨工程大学 | 申请人地址 | 黑龙江省哈尔滨市南岗区西大直街161号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
| 权利人 | 哈尔滨英赛克信息技术有限公司 | 当前权利人 | 哈尔滨英赛克信息技术有限公司 |
| 发明人 | 杨武 |
| 代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明提供的是一种基于并行处理的TCP协议及其数据还原装置及方法。其装置包括网络报文捕获装置、TCP协议分析与重组装置、重组数据存取装置和应用层数据通知装置。其方法包括网络报文捕获步骤、TCP协议分析步骤、TCP数据重组步骤和应用层通知步骤。通过本发明可以利用单点计算平台即可满足大流量网络环境下的TCP协议数据分析需求,无需额外增加软硬件环境,具有很高的性能价格比;TCP数据重组策略可以根据实际环境进行定制,更为有效地利用系统资源,使其利用率达到最大化;最终实现的报文分析技术具有很强的移植性,可以满足目前绝大多数的运行环境配置。
1.一种基于并行处理的TCP协议数据还原装置,其特征是:包括网络报文捕获装置、TCP协议分析与重组装置、重组数据存取装置和应用层数据通知装置;其特征包括:
网络报文捕获装置:用于捕获网络物理链路上传输的网络数据包,将捕获到的数据包存储到约定的特定存储区域中;
TCP协议分析与重组装置:对网络报文捕获装置得到的网络数据包,按照TCP协议约定的规则进行解析,按照正确的次序进行组织,并保存到特定的存储区域中;
重组数据存取装置:对TCP协议分析与重组装置得到的正确TCP数据报文进行重新组织,达到数据存取的高效性;具体包括:
(1)多线程组织策略
在应用程序启动之后,立即创建N1个线程,放入空闲队列中,这些线程都是处于阻塞状态,不消耗CPU资源,但占用较小的内存空间;当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行;当N1个线程都在处理任务后,缓冲池自动创建一定数量的新线程,用于处理更多的任务;在任务执行完毕后线程也不退出,而是继续保持在缓冲池中等待下一次的任务;当系统比较空闲时,大部分线程都一直处于暂停状态,缓冲池自动销毁一部分线程,回收系统资源;
(2)线程同步方案
使用两组互斥量来完成主数据报分配线程和数据报处理线程的同步;在主数据报分配线程中首先锁定相应的参数互斥量,如果此时该数据报处理线程正在处理数据报则主数据报分配线程会等待解锁,当处理线程处理完成后会解锁该互斥量使主数据报分配线程继续执行,当锁定了参数互斥量后就对参数进行赋值这时再解锁处理线程,处理线程便会进行数据的处理;
应用层数据通知装置:当重组数据存取装置组织数据完毕,即当前数据可用,采用适当的形式通知应用层提取数据,进行后续处理。
2.根据权利要求1所述的基于并行处理的TCP协议数据还原装置,其特征是:所述的TCP协议分析与重组装置进一步包括:网络报文分配单元和网络报文处理单元;网络报文分配单元用于将捕获的原始网络数据包按照特定的策略指定给某一网络报文处理单元;
网络报文处理单元对网络报文分配单元发送过来的原始网络数据包,执行TCP协议特征分析,并根据特征将其放置到重组数据存取装置中。
3.一种基于并行处理的TCP协议数据还原装置的处理方法,包括如下步骤:
网络报文捕获步骤,完全捕获在受管理网络中传输的网络报文;
TCP协议分析步骤,从捕获的原始报文中提取与TCP协议相关的描述特征,分析其中的TCP报文;
TCP数据重组步骤,对TCP协议分析步骤得到的TCP报文按照其规范进行重新拼装,并保存到特定的内存结构中;具体包括:
(1)多线程组织策略
在应用程序启动之后,立即创建N1个线程,放入空闲队列中,这些线程都是处于阻塞状态,不消耗CPU资源,但占用较小的内存空间;当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行;当N1个线程都在处理任务后,缓冲池自动创建一定数量的新线程,用于处理更多的任务;在任务执行完毕后线程也不退出,而是继续保持在缓冲池中等待下一次的任务;当系统比较空闲时,大部分线程都一直处于暂停状态,缓冲池自动销毁一部分线程,回收系统资源;
(2)线程同步方案
使用两组互斥量来完成主数据报分配线程和数据报处理线程的同步;在主数据报分配线程中首先锁定相应的参数互斥量,如果此时该数据报处理线程正在处理数据报则主数据报分配线程会等待解锁,当处理线程处理完成后会解锁该互斥量使主数据报分配线程继续执行,当锁定了参数互斥量后就对参数进行赋值这时再解锁处理线程,处理线程便会进行数据的处理;
应用层通知步骤,通知应用层分析程序当前TCP协议数据的重组状态,以便应用层程序根据不同的状态采取相应的措施。
基于并行处理的TCP协议及其数据还原装置及方法\n(一)技术领域\n[0001] 本发明涉及的是一种利用网络接口和计算机技术辅助网络协议分析与信息还原的的装置及方法。特别是一种利用并行处理技术来完成TCP协议及其中数据还原的系统和方法。\n(二)背景技术\n[0002] 随着Internet技术在全世界范围内的普及,它的应用范围深入到政府、军队乃至关系国计民生的各个领域。互联网给人们的生活、工作带来了巨大的方便。网络协议是支持Internet的核心技术,其中最为广泛应用的是TCP/IP协议族。\n[0003] Internet最初为信息共享提出,并设计实现的,动机较为单纯。随着应用领域的不断扩大,特别是推广到商业、政府甚至军事部门,原始Internet设计与实现中的一些问题被暴露出来,其中首要问题是安全问题,而内容安全问题则是重中之重,主要体现为信息泄密、不良信息传播、网络欺诈等。这些现象的存在严重阻碍了Internet的健康发展,影响Internet对社会的服务和推动作用。\n[0004] Internet中传输的信息内容都表现为网络协议报文,其无论从格式上还是内容上都有其特殊的表达方式,因此要分析Internet上的信息内容是否安全,首要的问题就是将由网络协议表示的数据还原成日常的信息描述,该过程称为网络协议还原。由于TCP/IP协议族是被广为采用的,因此针对TCP/IP进行还原的协议分析技术是主要的研究方向。\n[0005] TCP/IP协议还原的主要采用协议栈模拟技术,即通过RFC文档了解协议的工作过程,采用软件方式将其实现。在捕获网络数据包之后,按照实现的协议栈对齐进行分析,如果过程吻合,即可实现数据还原,Libnids是较为成功的早期协议栈实现(An implementation of an E-component of network intrusion detection system.http://www.packetfactory.net/Projects/Libnids/)。网络硬件设备的发展极大地提高了网络性能,网络带宽的数量级与日俱增,传统的、基于纯软件的协议分析技术收到了极大的挑战,因此VLSI(UNPXRev/ew,1987,5(9):70)、共享存储多处理器平台(处理器数量大于2)(多线程TCP/IP协议还原技术的研究.高技术通讯,2003(11):15~19)等方案分别被提出,但是这些方案都需要很高的硬件代价。在网络广为普及的今天,安全问题随处可见,并不是所有的应用环境都可以支付得起高配置的硬件平台,如果能在单处理器平台上开发先进的报文分析与重组技术,则其应用价值必将很高,而且具有广阔的应用前景。\n[0006] 并行化是解决网络报文重组的有效途径,可以在不同的网络层次是进行实施。\n(三)发明内容\n[0007] 本发明的目的在于提供一种工作在高速、大流量的网络环境下,能够在对其中传输的网络报文完全捕获的基础上,对其中TCP协议及其携带的数据内容进行完整的分析与还原的基于并行处理的TCP协议及其数据还原装置及方法。\n[0008] 本发明的目的是这样实现的:\n[0009] 本发明的基于并行处理的TCP协议及其数据还原装置,包括网络报文捕获装置、TCP协议分析与重组装置、重组数据存取装置和应用层数据通知装置;其特征包括:\n[0010] 网络报文捕获装置:用于捕获网络物理链路上传输的网络数据包,将捕获到的数据包存储到约定的特定存储区域中;\n[0011] TCP协议分析与重组装置:对网络报文捕获装置得到的网络数据包,按照TCP协议约定的规则进行解析,按照正确的次序进行组织,并保存到特定的存储区域中;\n[0012] 重组数据存取装置:对TCP协议分析与重组装置得到的正确TCP数据报文进行重新组织,达到数据存取的高效性;\n[0013] 应用层数据通知装置:当重组数据存取装置组织数据完毕后,及当前数据可用,采用适当的形式通知应用层提取数据,进行后续处理。\n[0014] 所述的TCP协议分析与重组装置进一步包括:网络报文分配单元和网络报文处理单元;网络报文分配单元用于将捕获的原始网络数据包按照特定的策略指定给某一网络报文处理单元;网络报文处理单元对网络报文分配单元发送过来的原始网络数据包,执行TCP协议特征分析,并根据特征将其放置到重组数据存取装置中。\n[0015] 本发明的基于并行处理的TCP协议及其数据还原的方法,包括如下步骤:\n[0016] 网络报文捕获步骤,完全捕获在受管理网络中传输的网络报文。在网络配置方面采用分光器等设备将受管理网络的流量镜像到网络报文捕获设备上;网络报文捕获设备上运行专门的软件程序提取镜像流量中的网络报文数据。\n[0017] TCP协议分析步骤,从捕获的原始报文中提取与TCP协议相关的描述特征,分析其中的TCP报文;利用网络协议中TCP协议规定的特征对网络报文数据进行匹配,过滤出其中的TCP报文。\n[0018] TCP数据重组步骤,对TCP协议分析步骤得到的TCP报文按照其规范进行重新拼装,并保存到特定的内存结构中。这里涉及到的具体问题是将TCP报文流中属于不同TCP链接的数据提取出来,并组织到一起,这里可利用TCP协议相关特征,如序列号、端口号等。\n[0019] 应用层通知步骤,通知应用层分析程序,当前TCP协议数据的重组状态,以便应用层程序根据不同的状态采取相应的措施。在该步骤中,可采用注册回调函数或设置消息队列的方式建立TCP数据重组与应用层程序之间的通信关系。\n[0020] 本发明的有益效果在于:通过本发明可以利用单点计算平台即可满足大流量网络环境下的TCP协议数据分析需求,无需额外增加软硬件环境,具有很高的性能价格比;TCP数据重组策略可以根据实际环境进行定制,更为有效地利用系统资源,使其利用率达到最大化;最终实现的报文分析技术具有很强的移植性,可以满足目前绝大多数的运行环境配置。\n(四)附图说明\n[0021] 图1是本发明的结构框图;\n[0022] 图2是一个基于并行处理的TCP协议及其数据还原方法流程图;\n[0023] 图3是并行TCP协议分析与重组流程图;\n[0024] 图4是实施发明的典型应用环境;\n[0025] 图5是TCP重组后的输出实例。\n(五)具体实施方式\n[0026] 下面结合附图举例对本发明做更详细地描述:\n[0027] 图1所示为一种基于并行处理的TCP协议及其数据还原系统,包括:\n[0028] 网络报文捕获装置,用于获取传输在网络中的全部网络报文数据;\n[0029] 网络报文存取装置,用于将捕获的网络报文按照特定规律存储到特定的数据结构中,在实施协议分析和重组时能够对报文进行快速的存取;\n[0030] TCP协议分析与重组装置,用于分析捕获后的原始网络报文,分析其中的TCP协议特征,并根据其特征将报文分配到网络报文存取装置中;\n[0031] 应用层数据通知装置,用于当TCP协议数据重组完毕后,通知应用层程序对其中的数据进行分析和处理,支持网络管理与信息安全应用。\n[0032] 实施例\n[0033] 图2给出了基于并行处理的TCP协议及其数据还原方法流程图。\n[0034] 1.原始网络报文捕获平台\n[0035] 为实现在高速、大流量网络环境下实现网络报文的完整捕获,本发明在实施中采用了基于零拷贝的报文捕获技术,零拷贝的实现技术如下:\n[0036] 零拷贝实现了数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。传统的网络数据报处理,需要经过网络设备到操作系统内存空间,系统内存空间到用户应用程序空间两次拷贝过程,同时还需要经历用户向系统发出的系统调用。\n[0037] 零拷贝技术首先利用DMA技术将网络数据报直接传递到系统内核预先分配的地址空间中,避免CPU的参与;同时,将系统内核中存储数据报的内存区域映射到检测程序的应用程序空间,还有一种方式是在用户空间建立缓冲区,并将其映射到内核空间,类似于linux系统下的kiobuf技术,检测程序直接对这块内存进行访问,从而减少了系统内核向用户空间的内存拷贝,同时减少了系统调用的开销。\n[0038] 2.网络数据报文快速存取\n[0039] 本发明采用基于Hash链表的二维缓冲区结构。Hash表具有计算简单、定位速度快的优点。Hash值利用TCP报文中的四元组数据,通过设计适当的Hash函数来生成。\n[0040] 缓冲区的内存管理策略采用动态与静态相结合的思想,既能保证较高的存取速度,同时也具有较高的系统资源利用率。缓冲区采用二维逻辑结构,即不需要为从报文捕获系统采集到的数据另外分配内存空间用以组织缓冲区,而是直接采用内存指针的关系建立链表,这种策略极大地减小了系统的存储开销,加快了存取速度。\n[0041] 3.TCP协议数据并行重组\n[0042] (1)多线程组织策略\n[0043] 大流量网络环境下单位时间内产生的网络数据会很大,同时网络数据之间或多或少存在着关系;此外单系统的线程资源也是有限的。因此采用特定策略的多线程并行重组方案才能满足需求。\n[0044] 本发明采用线程池技术组织协议重组线程。在应用程序启动之后,立即创建一定数量的线程(N1),放入空闲队列中。这些线程都是处于阻塞状态,不消耗CPU资源,但占用较小的内存空间。当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行。当N1个线程都在处理任务后,缓冲池自动创建一定数量的新线程,用于处理更多的任务。在任务执行完毕后线程也不退出,而是继续保持在池中等待下一次的任务。当系统比较空闲时,大部分线程都一直处于暂停状态,线程池自动销毁一部分线程,回收系统资源。这种策略缩减了频繁创建线程带来的系统开销,同时也避免了大流量数据所致的线程数量过多而导致系统崩溃的缺陷。\n[0045] (2)线程同步方案\n[0046] 当系统将某链接数据报交给一个线程去处理时,由于同一个链接的所有数据报都会由同一个线程处理,所以在处理线程还没有处理完成上一个数据报时主数据报分配线程要陷入等待。同理如果处理线程上没有数据时同样也要进行等待主数据报分配线程通知。\n为了避免线程进入忙等占用CPU资源,本发明使用两组互斥量来完成主数据报分配线程和数据报处理线程的同步。\n[0047] 在主数据报分配线程中首先锁定相应的参数互斥量,如果此时该数据报处理线程正在处理数据报则主数据报分配线程会等待解锁,当处理线程处理完成后会解锁该互斥量使主数据报分配线程继续执行,当锁定了参数互斥量后就对参数进行赋值这时再解锁处理线程,处理线程便会进行数据的处理。\n[0048] 4.TCP并行重组状态通知\n[0049] 选择适当的时机与方式通知应用层程序是一个重要的问题,在本发明中使用交换的概念进行通知作为数据处理单元。一次交换就是客户端和服务端的一次通信,即客户端发送数据和服务端对本次数据的回复共同构成一次交换。\n[0050] 每一次交换会进行三次通知,第一次是这次交换刚建立时,也就是服务器端刚收到客户端第一个有效数据报时,此时通知状态为TCP_SWAP_CLIENT;第二次是客户端收到服务器端第一个数据报时,此时通知状态为TCP_SWAP_SERVER;第三次通知状态为TCP_SWAP_FINISH会在以下几种情况时发生:\n[0051] (1)服务器端的ACK发生变化时。\n[0052] (2)收到RST数据报。\n[0053] (3)收到FIN数据报。\n[0054] (4)链接超时。\n[0055] 5.实施例场景与结果描述\n[0056] 为了验证本发明的有效性,我们搭建了典型应用环境,图4为实施例的典型应用环境。TCP协议分析与重组服务器的硬件环境为两个Intel(R)Xeon(R)CPU,主频为2G;内存容量为2G;软件环境为操作系统为Red Hat 4.1.1-52,内核版本为2.6.21。\n[0057] 具体实施方式为采用tcpdump应用程序录制流经网络出入口的数据,形成数据文件。另选一台机器,运行tcpreplay应用程序,通过不同的速度向运行协议分析与重组程序的机器进行回放,观察协议栈的行为,表1和表2分别为协议栈处理纯HTTP流量数据以及混合流量数据在不同回放速度下表现出的性能。图5为实际网络协议分析程序调用本发明接口实现的还原输出。\n[0058] 本实施例可以说明无论是在性能还是正确性方面,本发明都适用于利用单节点计算资源平台上(处理器数量不大于2)针对大流量网络环境下实施协议还原。\n[0059] 表1纯HTTP流量下的并行重组性能(数据总量2G)\n[0060] \n 速率(M/s) 发送总数据 接收总数据 识别tcp连 识别GET CPU使用\n 包数 包数 接数 请求数 率\n 100 2292539 2292539 39677 60817 15-30%\n 200 2292539 2292215 39642 60729 50-75%\n 300 2292539 2291791 39627 60546 120-140%\n 350 2292539 2271541 35373 55594 120-140%\n 400 2292539 2193510 30569 46446 130-140%\n 470 2292539 2016149 30083 44487 140-180%\n[0061] 表2混合流量下的并行重组性能(数据总量2G)\n[0062] \n 速率 发送总 接收总 IP数据 UDP数 TCP数 识别 CPU使 识别\n (M/ 数据包 数据包 包 据包 据包 tcp连 用率 GET\n s) 数 数 接数 请求\n 数\n 100 3031929 303184 303115 1677922 1349292 13584 5-30% 8883\n 2 2\n 200 3031929 303192 303123 1677978 1349323 13577 20-40% 8852\n 9 9\n 300 3031929 303124 303055 1677564 1349049 13553 30-80% 8943\n 0 1\n 400 3031929 303154 303085 1677735 1349178 13551 50-120 8960\n 1 1 %\n 450 3031929 303192 303123 1677978 1349323 13539 50-125 8865\n 9 9 %\n 最大 689 668 243 274 31 108\n 差值 0.01% 0.01% 0.01% 0.01% 0.1% 1%
法律信息
- 2022-02-22
未缴年费专利权终止
IPC(主分类): H04L 29/06
专利号: ZL 200910071486.7
申请日: 2009.03.04
授权公告日: 2012.02.01
- 2018-02-06
专利权的转移
登记生效日: 2018.01.18
专利权人由杨辉变更为哈尔滨英赛克信息技术有限公司
地址由100029 北京市西城区裕中西里27号楼607室变更为150000 黑龙江省哈尔滨市南岗区西大直街161号
- 2018-02-06
- 2017-11-24
专利权的转移
登记生效日: 2017.11.06
专利权人由哈尔滨工程大学变更为杨辉
地址由150001 黑龙江省哈尔滨市南岗区南通大街145号1号楼哈尔滨工程大学科技处知识产权办公室变更为100029 北京市西城区裕中西里27号楼607室
- 2017-11-24
- 2012-02-01
- 2009-09-16
- 2009-07-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-11-22
|
2005-05-20
| | |
2
| |
2004-09-15
|
2003-10-20
| | |
3
| |
2008-05-28
|
2007-12-11
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2015-01-26 | 2015-01-26 | | |