一种基于多核处理器的网络协议分析系统及其分析方法与流程

文档序号:11215707阅读:709来源:国知局
一种基于多核处理器的网络协议分析系统及其分析方法与流程

本发明属于计算机技术领域,涉及网络协议性能分析技术,特别涉及一种基于多核处理器的网络协议分析系统及其分析方法。



背景技术:

现有分析系统一般分为通用型和专用型。通用性分析系统虽然兼容性好,但是往往容易遭遇性能瓶颈,无法满足大中型数据中心的网络数据捕获分析要求;而专用型系统一般扩展性较差,碰到性能问题需要替换整套系统,造成成本很高。该发明专利既保持了通用性方案的优点,可以极大的提升性能和方便地进行扩展,具有非常实用的现实意义。

为了克服现有技术中的上述缺陷,本发明提出了一种基于多核处理器的网络协议分析方法及系统提供了一个通用和可扩展的网络协议分析系统框架。该框架不依赖于具体的硬件设备和环境,不需要特定硬件系统,如专业网卡,专业网络处理器或者专业存储器支持。同时该框架可以运行在各种操作系统下,也可以运行在无操作系统的嵌入式环境下,甚至可以运行于虚拟平台上。因此,通过开发新的底层的适配和驱动模块,可以快速方便地支持各种的硬件平台和环境。这样既可以利用最新的硬件设备不断提高网络协议分析系统的性能,用户可以根据自己的应用环境和性能要求灵活地选择硬件设备,甚至可以利用通用的pc服务器或者云计算平台进行快速部署,最大程度的利用现在硬件资源。



技术实现要素:

本发明提出了一种用于网络协议分析的分析系统实例模块,由至少一个工作处理器协作完成网络报文的采集、分析和记录,并配置数据包缓存和数据流缓存,所述工作处理器需独占一个处理器核心;所述工作处理器包括:采集处理器,其从物理网卡或者数据包文件中读取原始数据包,获取并缓存原始报文数据到所述数据包缓存;分发处理器,其对所述原始数据包进行协议预处理,依据所述原始数据包的基本协议信息进行哈希分组以分发到不同的分析处理器中;分析处理器,其对所述原始数据包进行网络协议分析,根据原始数据包的报文内容和数据流缓存信息解析原始报文数据获得协议分析结果和统计信息,协议分析结果和统计信息暂存到所述数据包缓存中;统计处理器,其收集所有原始数据包的协议分析结果和统计信息,并以协议分析结果和统计信息更新本地内存中的网络协议指标数据表;存包处理器,其将需要保存的原始数据包中的原始报文数据写入所述数据包存储缓冲;记录处理器,其定期将所述网络协议指标数据表中的协议分析结果和统计信息传输至本地或远端的数据记录系统中;存储处理器,其将保存于所述数据包存储缓冲中的数据写入物理存储器中。

本发明提出的所述分析系统实例模块中,所述分发处理器利用哈希分组算法将属于同一条数据流的原始数据包始终被分发到同一个分析处理器进行处理。

本发明还提出了一种基于多核处理器的网络协议分析系统,包括:数据源;所述一个或多个分析系统实例模块;数据记录系统,其与所述分析系统实例模块中的记录处理器通信,用于记录、显示协议分析结果和统计信息;及物理存储器,其与所述分析系统实例模块中的存储处理器通信,用于以物理存储数据包缓存中的原始报文数据。

本发明还提出了一种基于所述网络协议分析系统的分析方法,包括如下步骤:

步骤一:采集处理器其从数据源中读取原始数据包,获取并缓存原始报文数据到所述数据包缓存,将数据包缓存放入分发处理器的处理队列中;

步骤二:分发处理器读取所述数据包缓存,对所述原始数据包进行协议预处理,依据所述原始数据包的基本协议信息进行哈希分组编号,根据编号分发到不同的分析处理器的处理队列中;

步骤三:分析处理器读取数据包缓存,对所述原始数据包进行网络协议分析,根据原始数据包的报文内容和数据流缓存信息解析原始报文数据获得协议分析结果和统计信息,协议分析结果和统计信息暂存到所述数据包缓存中;

步骤四:统计处理器读取数据包缓存,收集所有原始数据包的协议分析结果和统计信息,并以协议分析结果和统计信息更新本地内存中的网络协议指标数据表,释放数据包缓存;

步骤五:判断是否需要存储原始数据包,若无需存储原始数据包,则跳转至步骤七

步骤六:存包处理器读取数据包缓存,将需要保存的原始数据包中的原始报文数据写入所述数据包存储缓冲;

步骤七:释放数据包缓存中的原始数据包的数据字段。

本发明提出的所述分析方法中,步骤七之后进一步包括:

步骤八:记录处理器定期将所述网络协议指标数据表中的协议分析结果和统计信息传输至本地或远端的数据记录系统中;

步骤九:存储处理器将保存于所述数据包存储缓冲中的原始报文数据写入物理存储器中。

本发明的有益效果在于:基于多核处理器的网络协议分析方法及系统提供了一个通用和可扩展的网络协议分析系统框架。该框架不依赖于具体的硬件设备和环境,不需要特定硬件系统,如专业网卡,专业网络处理器或者专业存储器支持。同时该框架可以运行在各种操作系统下,也可以运行在无操作系统的嵌入式环境下,甚至可以运行于虚拟平台上。因此,通过开发新的底层的适配和驱动模块,可以快速方便地支持各种的硬件平台和环境。这样既可以利用最新的硬件设备不断提高网络协议分析系统的性能,用户可以根据自己的应用环境和性能要求灵活地选择硬件设备,甚至可以利用通用的pc服务器或者云计算平台进行快速部署,最大程度的利用现在硬件资源。通过对报文处理工作流的解耦保证了各工作处理器的无锁操作,在提供配置灵活性的同时了实现了报文处理的高性能。

附图说明

图1是网络协议分析系统框架示意图。

图2是网络协议分析系统工作流水示意图。

图3是网络数据包处理流程图。

具体实施方式

结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。

本发明分析系统实例模块是一个具有完整网络协议分析功能的模块。分析系统实例模块基于多核处理器的网络协议分析方法及系统提供了一个通用和可扩展的网络协议分析系统框架。该框架将网络协议分析系统的各个功能模块抽象为不同的工作处理器,相同的工作处理器具有相同的代码逻辑,通过简单适配目标平台,其既可以以嵌入式程序的方式直接运行于通用多核处理器的cpu核心上,又可以以工作线程的模式运行于其他操作系统,甚至可以运行于虚拟操作平台上。同时,通过定义标准的报文读取接口和格式,可以快速方便地通过开发新的底层适配和驱动模块,来实现对各种的硬件平台和环境的支持。以上这些特性可以使该框架不依赖于或尽量少地依赖于具体的硬件设备和环境,不需要特定硬件系统,如专业网卡,专业网络处理器或者专业存储器支持。这样既可以利用最新的硬件设备不断提高网络协议分析系统的性能,用户可以根据自己的应用环境和性能要求灵活地选择硬件设备,甚至可以利用通用的pc服务器或者云计算平台进行快速部署,最大程度的利用现在硬件资源。对所有流入的网络流量进行分析和统计,并将分析结果输出到数据记录系统。每个网络协议分析系统可以有多个分析系统实例模块模块,各个分析系统实例模块模块是相互独立并由一个系统唯一的实例号进行标识。

每个分析系统实例模块由多个工作处理器协作完成网络报文的采集、分析和记录,还配置有数据包缓存和数据流缓存。每个数据包缓存由两部分组成:协议信息字段和原始数据字段。每个采集到的原始网络数据包保存在独立的数据包缓存的原始数据字段中。缓存的协议信息字段将存储对该数据包的报文信息和协议分析结果。该缓存用于在网络协议分析工作流水中进行处理时传递数据包原始数据和网络协议分析结果。在完成所有的协议分析和统计后该缓存将被系统释放回收并循环使用。数据流缓存具有相同基本协议信息(源ip地址、目的ip地址、协议、源端口、目的端口以及vlan号等)的数据包组成一条的数据流。网络协议分析系统将缓存所有数据流的基本信息和运行时状态以辅助进行网络协议分析。

工作处理器可以是直接运行于通用多核处理器的cpu核心上的嵌入式程序,也可以是运行在操作系统上的工作线程。为了满足网络协议分析系统的性能和实时性要求,每个工作处理器需要独占一个cpu核心以避免其它系统进程的干扰。每个网络数据包都需要经过由多个工作处理器组成的工作流水进行分析处理,根据各自功能的不同,工作处理器又分为以下7种基本类型:

采集处理器,其负责将网络数据包从物理网卡或者数据包文件读取并将原始报文数据保存到数据包缓存。采集处理器可以采用多种数据包抓取方式,如dpdk、libpcap或者专用网卡驱动等。

分发处理器,其负责将采集处理器读取的原始数据包进行协议预处理。根据数据包的基本协议信息,如源ip地址、目的ip地址、协议、源端口、目的端口以及vlan号等对数据包进行哈希分组后将其分发到不同的分析处理器进行协议分析。哈希分组算法保证属于同一条数据流的网络数据包将始终被分发到同一个分析处理器进行处理。

分析处理器,其负责对数据包进行具体的网络协议分析。分析处理器根据数据包的报文内容和数据流缓存信息解析报文,并根据协议分析的结果更新数据包缓存和数据流缓存。同时,协议分析结果和统计信息也将被暂存到数据包缓存中以传递给统计处理器进行后继处理。

统计处理器,其负责收集所有数据包的协议分析结果和统计信息。协议分析结果和统计信息将被用于更新本地内存中的网络协议指标数据表。

存包处理器,其负责将需要保存的数据包中的原始数据按指定格式写入数据包存储缓冲。已写入数据包存储缓冲的数据会由存储处理器最终保存到物理存储中。

记录处理器,其负责定期将网络协议指标数据表中协议分析结果和统计信息按指定的目标格式传输到本地或云端的数据记录系统。数据记录系统中保存的海量网络状态和性能信息将被后台进一步聚合、整理和分析后按需要的形式提供给网络管理员或用户。

存储处理器,其负责将已写入数据包存储缓冲的数据以文件的形式保存到磁盘或磁带等物理存储器中。

图1即是网络协议分析系统的框架示意图。一个或多个网络分析系统分别从一个或多个网络数据源读取网络数据包进行分析。并将协议分析结果和统计信息传输到本地或云端的一个或多个数据记录系统。用户通过查询数据记录系统来获得网络状态信息。其中:

每个网络分析系统可以包括一个或多个网络分析实例,每个网络分析实例由系统唯一的实例号进行标识。每个网络分析实例可以从一个或多个网络数据源读取网络数据包。

网络数据源可以是物理网卡,也可以是以文件形式存储的网络数据包。

网络协议分析系统实例模块生成的协议分析结果和统计信息可以全部传输到一个本地或云端的数据记录系统,也可以将不同的协议分析结果和统计信息分别传输到多个地或云端的数据记录系统。数据记录系统除了保存协议分析结果和统计信息外,还负责对数据进行进一步的分析、聚合和呈现。

网络分析系统可以兼容各种硬件设备和环境,可以利用最新的硬件设备不断提高网络协议分析系统的性能,及根据不同应用环境和性能要求灵活地选择硬件设备实现系统的快速部署,实际使用中具有很好的扩展性。且该系统流水线般的处理方式使任意工作处理器之间完全没有相关性,最大程度的利用现在硬件资源,可以实现无锁的操作,具有非常高的处理性能。

图2即是网络协议分析系统的一个分析系统实例模块的工作流水图。其中网络数据源负责向分析系统实例模块提供多种格式的网络数据包,如原始网络帧,pcap数据包封装等。采集处理器将根据网络数据源的格式进行特定的报文采集和格式转换。在进行报文分析时,网络分析系统将一个完整的报文分析过程分拆为多个不同的处理环节并分配到对应的工作处理器上,工作处理器在每个处理环节完成后将当前得到的分析结果保存于数据包缓存的协议信息字段并将其传递给下一步处理环节对应的工作处理器,从而保证了报文分析所需的协议信息在同一时刻只能被唯一的工作处理器使用,任意工作处理器之间完全没有相关性。同时,对数据流的哈希分组保证了同一时刻只有唯一的分析处理器访问同一个数据流缓存,按网络数据包协议类型、过滤规则或网络站点对目标统计处理器分组也保证了同一时刻只有唯一的统计处理器访问网络协议指标数据表的同一字段。以上这些措施将保证了各工作处理器的无锁操作,在提供配置灵活性的同时了实现了高性能的报文处理

图3即是网络协议分析系统中网络数据包处理流程图。网络数据包由分析系统实例从数据源读取后经由多个工作处理器组成的工作流水进行处理,详细处理过程可参考工作流水定义。具体的工作流程如下:

1.每个采集处理器负责从一个或多个网络数据源读取网络数据包数据并将其转存到的独立的数据包缓存的原始数据字段中。处理完成后,采集处理器将数据包缓存按网络数据包到达的顺序放入对应的分发处理器的处理队列中。

每个分析系统实例模块所配置的采集处理器个数可根据网络数据源的个数和网络流量进行调整。

2.每个分发处理器从自己的处理队列中逐个读取数据包缓存。分发处理器初始化数据包缓存中原始网络数据包的基本协议信息,如源ip地址、目的ip地址、协议、源端口、目的端口以及vlan号等,并使用这些信息进行哈希得出网络数据包唯一的哈希索引。该哈希索引和基本协议信息将被一同存入数据包缓存的协议信息字段。其后分发处理器使用如下公式决定处理该数据包缓存的分析处理器编号:

分析处理器编号=(哈希索引%分析处理器总数)+1

处理完成后,分发处理器根据计算得出的分析处理器编号将数据包缓存按到达顺序放入对应分析处理器的处理队列中。

每个分析系统实例模块所配置的分发处理器个数小于或等于采集处理器个数。

3.每个分析处理器从自己的处理队列中逐个读取数据包缓存。分析处理器根据网络数据包的报文内容解析,从中提取的报文信息存入数据包缓存的协议信息字段。随后,分析处理器将结合报文信息、网络数据包数据和数据流缓存信息对网络数据包进行进一步解析。协议分析得出的信息将被用于更新数据包缓存和数据流缓存,同时协议分析结果和统计信息也将被存入数据包缓存中的协议信息字段。

处理完成后,分析处理器将数据包缓存按到达顺序放入统计处理器的处理队列中,目标统计处理器的选择规则可以是网络数据包协议类型、过滤规则或网络站点分组等。如果需要保存原始数据包,将数据包缓存中的原始数据字段放入对应存包处理器的处理队列中,目标存包处理器的选择规则可以是随机分组等,但需要保证同一条数据流的数据包始终被发送到相同的存包处理器。

每个分析系统实例模块所配置的分析处理器个数可根据网络流量和分析系统实例模块的功能配置进行调整。

4.每个统计处理器从自己的处理队列中逐个读取数据包缓存。统计处理器根据数据包缓存的协议信息字段中的协议分析结果和统计信息更新网络协议指标数据表。

处理完成后,统计处理器将数据包缓存释放回数据包缓存池以供循环使用,需要注意的是,释放数据包缓存并不释放原始数据字段的物理内存。

每个分析系统实例模块所配置的统计处理器个数可根据网络流量和分析系统实例模块的功能配置进行调整。

5.每个存包处理器从自己的处理队列中逐个读取数据包缓存中的原始数据字段,并将字段中的网络数据包数据按分析系统实例模块所配置的格式(如pcap、纯文本等)写入数据包存储缓冲。

处理完成后,存包处理器将数据包缓存的原始数据字段释放回数据包数据缓存池以供循环使用。

每个分析系统实例模块所配置的存包处理器个数可根据网络流量和分析系统实例模块的功能配置进行调整。

6.记录处理器定期读取网络协议指标数据表中的协议分析结果和统计信息并转换特定格式的指标信息。转换好的指标信息将被发送到本地或云端的数据记录系统中。

每个分析系统实例模块只配置1个记录处理器。

7.存储处理器定期将已写入数据包存储缓冲中数据包数据转存到物理存储器中。在物理存储中保存的文件的格式由分析系统实例模块的配置指定。

每个分析系统实例模块只配置1个存储处理器。

本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1