一种高效网络数据包协议分析方法和系统与流程

文档序号:28860544发布日期:2022-02-12 00:26阅读:95来源:国知局
一种高效网络数据包协议分析方法和系统与流程

1.本技术涉及网络数据处理技术领域,尤其涉及一种高效网络数据包协议分析方法和系统。


背景技术:

2.所有的网络问题或基于网络的应用问题,无论终端有多大差别,或者应用本身有多么复杂,都离不开网络数据包。为了更好地了解网络,快速解决相关问题,我们需要进入到网络传输的最小单元数据包中,通过分析数据包,信息传输不再存在秘密。我们对网络数据包进行深入分析,就是为了更好地了解网络是如何运行的,数据包是如何被转发的,应用是如何被访问的,有了这些了解,当再次出现网络故障或网络应用问题,就能够很快的解决。
3.现有的网络数据包协议分析工具有tcpdump和wireshark等,但上述方法只能做单个节点数据包抓取分析,无法追踪多个节点数据包传输情况,因此均不适合大规模应用,尤其不适用分布式和微服务。


技术实现要素:

4.本技术提供一种高效网络数据包协议分析方法和系统,以解决现有技术中,网络数据包协议分析工具只能做单个节点数据包抓取分析,无法追踪多个节点数据包传输情况,不能进行大规模应用的问题。
5.本技术的上述目的是通过以下技术方案实现的:
6.第一方面,本技术实施例提供一种高效网络数据包协议分析方法,包括:
7.通过预设agent中的pinpoint动态探针采集网络数据,并对所述网络数据进行过滤汇总;
8.将所述过滤汇总后的网络数据写入至预设消息发布订阅系统中;
9.通过预设大数据平台获取所述消息发布订阅系统中的网络数据,并进行计算分析,得到并存储网络数据分析结果。
10.进一步的,所述通过预设agent中的pinpoint动态探针采集网络数据,包括:
11.将agent直接部署在待采集网络数据的服务器上,采集网络数据;
12.和在待采集网络数据的服务器的上联交换机配置端口镜像,并将镜像链路对接指定网卡,通过agent采集汇总镜像网卡的网络数据。
13.进一步的,还包括:
14.通过预设ip访问权限控制模块和接口验证模块,对agent采集过程进行权限检测和接口验证。
15.进一步的,所述通过预设agent中的pinpoint动态探针采集网络数据,包括:
16.计算预设周期内每个接口的调用次数;
17.基于所述每个接口的调用次数和预设比例或阈值,动态计算采样率;
18.通过预设agent中的pinpoint动态探针根据所述采样率采集网络数据。
19.进一步的,所述对所述网络数据进行过滤汇总包括:
20.通过预设数据过滤模块对所述网络数据进行过滤;
21.将过滤后的网络数据进行封装。
22.进一步的,所述通过预设大数据平台获取所述消息发布订阅系统中的网络数据,并进行计算分析,包括:
23.对不同url的请求数据通过多个计算线程进行计算,以及对相同url的请求数据通过多个线程进行计算。
24.进一步的,所述通过预设大数据平台获取所述消息发布订阅系统中的网络数据,并进行计算分析,得到并存储网络数据分析结果,包括:
25.通过预设大数据平台基于获取的消息发布订阅系统中的网络数据,生成跟踪树;
26.基于所述跟踪树构成得到调用链路;
27.将所述调用链路写入数据库中。
28.进一步的,所述通过预设大数据平台获取所述消息发布订阅系统中的网络数据,并进行计算分析,还包括:
29.基于关键字、正则表达式、ip范围或域名和所属地域配置告警规则;
30.通过多线程队列对每个网络数据进行报文分析、规则匹配和进行告警。
31.第二方面,本技术实施例还提供一种高效网络数据包协议分析系统,包括:采集端agent、消息订阅发送系统和大数据平台;
32.所述采集端agent,用于通过pinpoint动态探针对网络数据进行采集和过滤汇总,并将过滤汇总后的网络数据上传至所述消息订阅发送系统中;
33.所述消息订阅发送系统,用于接收并存储所述采集端agent上传的网络数据;
34.所述大数据平台,用于获取所述消息订阅发送系统中存储的网络数据,并基于所述网络数据进行计算分析。
35.进一步的,所述大数据平台还用基于所述计算分析结果,定制告警规则生成告警信息和生成分析报表或图表。
36.本技术的实施例提供的技术方案可以包括以下有益效果:
37.本技术的实施例提供的技术方案中,首先通过预设agent中的pinpoint动态探针采集网络数据,并对网络数据进行过滤汇总;将过滤汇总后的网络数据写入至预设消息发布订阅系统中;通过预设大数据平台获取消息发布订阅系统中的网络数据,并进行计算分析,得到并存储网络数据分析结果。如此,通过agent采集汇总网络数据,并通过大数据平台对网络数据进行计算分析,可以实现大规模的尤其是对于分布式和微服务等的多个节点的数据包进行抓取分析,解决了现有技术中网络数据包协议分析方法中,只能做单个节点数据包抓取分析,无法追踪多个节点数据包传输情况,不能进行大规模应用的问题。
38.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
39.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施
例,并与说明书一起用于解释本技术的原理。
40.图1为本技术实施例提供的一种高效网络数据包协议分析方法的流程示意图;
41.图2为本技术实施例提供的一种高效网络数据包协议分析方法中通过直接抓取的方式采集网络数据的原理示意图;
42.图3为本技术实施例提供的一种高效网络数据包协议分析方法中端口镜像方式的采集网络数据的原理示意图;
43.图4为本技术实施例提供的一种高效网络数据包协议分析装置的结构示意图。
具体实施方式
44.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
45.现有的网络数据包协议分析的方法一般是通过分析工具如tcpdump和wireshark等进行的,其存在如下缺点:
46.一是缺少友好直观的图形界面(linux服务器环境),命令操作复杂,学习曲线陡峭;二是不适合大规模应用,尤其不适用分布式和微服务,这些工具只能做单个节点数据包抓取分析,无法追踪多个节点数据包传输情况;三是没有持久化数据,无法回溯历史数据;四是采样的频率没法动态调整,导致系统资源分配不合理。
47.为了解决上述问题,本技术提供一种高效网络数据包协议分析方法和系统,以在数据分析过程中提供有可视化web界面,方便查看和配置;将各个服务节点的数据包汇总和大数据平台计算分析,便于了解分析全局的网络和应用状况;将数据持久化到数据库,方便后续数据查阅和分析;以及动态计算采样率,从而节省计算资源和存储资源并且提高效率。具体实现方案通过以下实施例进行详细说明。
48.实施例
49.参照图1,图1为本技术实施例提供的一种高效网络数据包协议分析方法的流程示意图,如图1所示,该方法至少包括以下步骤:
50.s101、通过预设agent中的pinpoint动态探针采集网络数据,并对所述网络数据进行过滤汇总。
51.本技术提供的数据包采集分析方法涉及软件和硬件之间的协作过程,主要分为采集、解码和分析3个过程。这三个阶段在现有技术中,常见的是基于tcpdump、wireshark技术或便携式协议分析软件采集包文并分析的过程。但这种工作过程存在诸多的限制,如数据包采集环境的特定性,数据包采集的时效性及数据存储和分析的高性能要求等。简单的说,类似wireshark这种便携式协议分析工具,虽然具有强大的解码分析能力,但在当今复杂的网络环境下,高吞吐量的数据传输和更加快速定位故障的需求下,无论是数据采集能力,还是更为友好直观的分析展现能力,便携式分析软件都显得苍白无力。而在本技术中,对于网络数据如网络数据包的采集是基于pinpoint开发的,利用pinpoint的事务跟踪技术,追踪网络各个节点的数据包流向关系,需要说明的是本技术通过pinpoint,可配置采样资料而不必追踪每个请求,采用异步数据传输,从而大大提高了并发能力。
52.具体的,本技术中,首先在待采集数据的服务器上部署代理agent,agent内置多种网络传输协议,如http/https、tcp、udp、ftp、smtp、mqtt、jdbc等,可以支持丰富的传输协议。在进行数据采集时,首先配置采集规则,然后agent基于配置的采集规则通过使用pinpoint动态探针技术对网络数据采样,然后由数据过滤模块进行过滤判断,对于需要分析处理的数据会转发至后端进行处理,在实际应用中可以是通过消息发布订阅系统将数据传递至大数据平台中,供大数据平台对数据进行后续处理;对于不需要分析处理的数据直接转发,即将该数据进行舍弃,从而减少了系统开销,提升了系统性能。通过agent探针来收集和存储指定服务节点的网络数据,实现对关键业务系统、链路进行7
×
24小时、全方位的流量监控,保证数据采集准确全面。
53.在通过预设agent中的pinpoint动态探针采集网络数据时,还需要并对网络数据进行过滤汇总。在实际应用中,首先可以通过配置采集端agent,限制采集的范围,比如ip、url、端口号、协议等等,缩小采集范围,聚焦重点数据。另外,在agent中还可以将采样的数据封装成pinpoint的span、trace和traceid的数据结构,从而保持各个网络节点数据包的关系,实现过滤汇总,帮助后续大数据平台更快更准确地进行数据计算分析,加快数据处理流程。
54.s102、将所述过滤汇总后的网络数据写入至预设消息发布订阅系统中。
55.具体的,本技术实施例提供的高效网络数据包协议分析方法中,采用b/s架构,agent端采集数据发布到消息发布订阅系统中,如kafka集群(kafka是一种高吞吐量分布式消息发布订阅系统),然后大数据平台订阅kafka中的数据,实现高吞吐量作业。
56.需要说明的是,本技术实施例提供的方案中,kafka和大数据平台可以采用集群模式,可动态扩展,从而进一步提升系统的整体数据处理及存储能力,满足各种高吞吐量需求。
57.s103、通过预设大数据平台获取所述消息发布订阅系统中的网络数据,并进行计算分析,得到并存储网络数据分析结果。
58.具体的,大数据平台可以采用集群模式,性能稳健,数据处理效率高。在通过部署在需要采集网络数据的服务器上的agent,根据配置的采集规则,采集到服务器网卡的数据后,通过kafka汇总传递至到后端大数据平台。大数据平台对获取的数据包进行解码,保存为基本的具有可读性的文本格式,并保存各数据的关联关系,生成关系树。而且,还可以根据大数据平台中的数据和各数据的关联关系,灵活定制告警规则生成告警信息,以及配置模板生成分析报表或图表。例如,从kafka获取数据后,将span信息计算生成跟踪树,构成调用链路,并写入数据库。
59.本技术的实施例提供的技术方案中,首先通过预设agent中的pinpoint动态探针基于预先配置的采集规则采集多个节点的网络数据,然后对采集到的数据进行封装;然后将过滤封装后的数据写入到kafka中;最后大数据平台通过订阅获取kafka中的数据,对数据包进行解码保存,并且基于各数据的关联关系,生成关系树,定制告警规则生成告警信息,以及配置模板生成分析报表或图表,实现数据采集、追踪、解码、存储、分析和告警等多个阶段,全方位提供解决方案,完成网络数据包协议高效分析。同时因为kafka和大数据平台均为集群模式,数据处理效率高,能够完成各种高吞吐量的需求,实现大规模数据处理应用。解决了现有技术中,只能做单个节点数据包抓取分析,无法追踪多个节点数据包传输情
况,不能进行大规模应用的问题。
60.进一步的,本技术实施例提供的高效网络数据包协议分析方法中,通过预设agent中的pinpoint动态探针采集网络数据的方式有两种,包括第一种:将agent直接部署在待采集网络数据的服务器上,采集网络数据,即直接抓取方式;第二种为:在待采集网络数据的服务器的上联交换机配置端口镜像,并将镜像链路对接指定网卡,通过agent采集汇总镜像网卡的网络数据,即端口镜像方式。图2为本技术实施例提供的一种高效网络数据包协议分析方法中通过直接抓取的方式采集网络数据的原理示意图,图3为本技术实施例提供的一种高效网络数据包协议分析方法中端口镜像方式的采集网络数据的原理示意图,如图2和图3所示:
61.对于直接抓取方式,即在需要抓取流量数据的服务器上直接部署流量采集agnet,采集服务器网卡数据并汇总给后端大数据平台。需要说明的是,直接抓取的部署方式,适用于服务器数量不多,且操作系统为主流linux(redhat系列,debian系列等等),windows的情况,直接部署方式操作比较简单,需要在生产环境服务器上安装采集agent。
62.对于端口镜像方式,即在需要抓取流量数据的服务器比较多的情况下,可以在这些服务器的上联交换机配置端口镜像,镜像链路对接到我们的流量采集服务器的指定网卡,采集服务器集成流量采集agent,负责汇总镜像网卡数据给后端大数据平台。需要说明的是,端口镜像方式适用于生产环境网络架构复杂的情况,比如,服务器数量比较多、操作系统版本差异大(目标服务器的操作系统或属于小众品牌、或系统版本特别老旧、或是各种闭源unix小型机的情况);服务器所属生产环境为提高并发吞吐量,架设有负载均衡设备(该设备相当于代理服务器,会透穿客户端到真实服务器之间的网络请求,造成客户端和真实服务器间的互不感知,进而影响服务器对真实网络请求的统计)等。
63.另外,为贴合当前大数据,devops的运维需求,对于服务器操作系统为新版linux的情况,本技术提供的方案中,还可以通过docker的部署方式,既实现了采集端容器化的部署方式,也达成了部署配置的通用性。
64.在一些具体的实施过程中,本技术实施例提供的高效网络数据包协议分析方法中,还包括:通过预设ip访问权限控制模块和接口验证模块,对agent采集进行权限检测和接口验证。
65.具体的,由于pinpoint没有做访问权限等安全性控制,有被乱灌数据的隐患,或不良用户访问到各种请求链路详细信息。在本技术实施例提供的方案中,增加了ip访问权限控制模块和接口验证功能,对数据采集等过程进行权限和接口的验证,从而提高系统整体安全性。
66.在实际应用中,在对数据进行采集处理的过程中,如果每个请求都跟踪,则大大增加了系统性能压力,降低了采集效率。而如果设置固定的采样率,则对调用频率高的接口影响不大,调用频率低的接口可能采集不到数据。针对这一问题,本技术实施例提供的高效网络数据包协议分析方法中,在通过预设agent中的pinpoint动态探针采集网络数据的过程中,采用动态计算采样率的方式进行采集。包括:计算预设周期内每个接口的调用次数;基于所述每个接口的调用次数和预设比例或阈值,动态计算采样率;通过预设agent中的pinpoint动态探针根据所述采样率采集网络数据。
67.具体的,动态计算采样率算法包括在一个周期内统计每个接口的调用次数,根据
一定的比例或阈值计算出采样率。并且,在此基础上还可以考虑最近有没有异常信息。
68.例如,采用协程单独计算采样率,我们设置每隔一个小时计算一次采样率,threshold为10000;
69.//一个小时3600秒
70.long duration=3600;
71.//请求数量
72.long requestcount=1000;
73.//采样率
74.double rate=1.0d;
75.//阈值
76.long threshold=10000;
77.//最近一小时有没有告警
78.boolean lasthaveerror=true;
79.//如果有最近一小时有告警,则增加的量
80.long increment=10;
81.//当最近一个小时内请求量小于1000时,全部采集
82.if(requestcount《=threshold/10){
83.rate=1.0d;
84.}else if(requestcount《=threshold){//当请求量介于1000~10000之间时,采集20%即2000个
85.rate=0.2d;
86.}else{//当请求量大于阈值threshold时
87.//如果最近一小时有异常信息,则加倍采样
88.if(lasthaveerror){
89.rate=increment/(math.log(requestcount)*math.log(requestcount));
90.rate=rate》1?1:rage;
91.}else{
92.rate=1/(math.log(requestcount)*math.log(requestcount));
93.}
94.}
95.如此,如果接口每小时请求在100万以下(符合正态分布),采集的数量保持在10000以内。既兼顾了最近异常信息多采集,节省了cpu运算资源,也节省了存储资源,还提高了效率。
96.需要说明的是,本技术实施例提供的方案为应用级别的网络数据分析技术,为了提高agent端的性能且不影响所监控的节点运行,agent只负责采集数据,并不对数据进行加工计算,直接将采集到的数据写入kafka。而且通过agent探针来收集网络节点的数据信息,并不需要侵入应用代码,从而保证整体安全性。
97.在实际应用中,将每个url使用md5算法生成摘要作为kafka的消息topic,这样kafka集群有多个消费者端consumer,充分利用了kafka集群和服务器资源,提高了服务端
处理效率和吞吐量。如string topic=md5(url);在kafka消费者端consumer也即数据包分析计算端如大数据平台),同一个url的请求数据,可以有多个计算线程,并且不同的url对应不同的计算线程,多个线程并发或并行计算,大大提高了计算效率。
98.进一步的,在本技术实施例提供高效网络数据包协议分析方法中,还包括对告警进行重新定义,具体如基于关键字、正则表达式、ip范围或域名、所属地域等配置告警规则,服务端如大数据平台获取到上报的数据后放入内存中,采用多线程队列对每个数据包进行报文分析、规则匹配,实现告警后数据持久化。
99.基于同一个发明构思,本技术实施例还提供一种高效网络数据包协议分析系统,图4为本技术实施例提供的一种高效网络数据包协议分析装置的结构示意图,其中虚线框中的为高效网络数据包协议分析装置,如图4所示,本技术实施例提供的高效网络数据包协议分析装置包括:采集端agent1、消息订阅发送系统2和大数据平台3;
100.所述采集端agent1,用于通过pinpoint动态探针对网络数据进行采集和过滤汇总,并将过滤汇总后的网络数据上传至所述消息订阅发送系统2中,如图4中,包括通过pinpoint进行采集、基于规则过滤以及进行数据封装;所述消息订阅发送系统2如kafka集群,用于接收并存储所述采集端agent1上传的网络数据;所述大数据平台3,用于获取所述消息订阅发送系统2中存储的网络数据,并基于所述网络数据进行计算分析。进一步的,所述大数据平台3还用基于所述计算分析结果,定制告警规则生成告警信息和生成分析报表或图表。
101.具体的,首先由于pinpoint本身不支持中文(用户名、用户分组、告警信息等等),所以重新开发,让其支持中文,并配合可视化,增强用户体验,降低用户学习使用难度;而且通过对网络数据进行采集过滤、封装以及计算处理和存储,可以供使用者查看网络使用情况及网络上的通信主体、确认哪些应用占用带宽、识别网络中存在的攻击或恶意行为、分析定位网络故障和延时大小、查看用户访问应用的快慢情况等,并且通过上述方法实施例中的原理实现优化和改进应用性能。
102.可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
103.需要说明的是,在本技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本技术的描述中,除非另有说明,“多个”的含义是指至少两个。
104.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
105.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场
可编程门阵列(fpga)等。
106.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
107.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
108.上述提到的存储介质可以是只读存储器,磁盘或光盘等。
109.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
110.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1