本发明涉及网络数据包分析的,具体地,涉及基于生成语言模型的网络数据包分析方法及系统。
背景技术:
1、网络数据包(包括pcap、pcapng等格式的数据包文件)分析是网络问题诊断的常用方法,从网络数据包中找到问题,需要具备网络通信协议和故障现象的专业知识,一般由资深的网络工程师人力完成工作。生成语言模型是一种根据输入信息给出对应输出信息的神经网络模型(目前一般采用transformer类架构)。
2、在公告号为cn114039900a的专利文献中公开了一种高效网络数据包协议分析方法和系统,该方法包括首先通过预设agent中的pinpoint动态探针采集网络数据,并对网络数据进行过滤汇总;再将过滤汇总后的网络数据写入至预设消息发布订阅系统中;通过预设大数据平台获取消息发布订阅系统中的网络数据,并进行计算分析,得到并存储网络数据分析结果。该专利主要实现对网络订阅数据的过滤和发现,主要强调其处理性能,不涉及过多的包问题分析。
3、因此,需要提出一种新的技术方案。
技术实现思路
1、针对现有技术中的缺陷,本发明的目的是提供一种基于生成语言模型的网络数据包分析方法及系统。
2、根据本发明提供的一种基于生成语言模型的网络数据包分析方法,所述方法包括如下步骤:
3、步骤s1:构建tshark诊断知识库,所述知识库包含功能-命令数据集、返回值-分析数据集及特征-结论数据集;
4、步骤s2:构建tshark诊断语言模型,将知识库中的数据转换为语言模型训练样本的格式,混合步骤s1中的功能-命令数据集、返回值-分析数据集及特征-结论数据集的样本数据,向模型灌输知识;
5、步骤s3:构建诊断代理模块,分析数据包并找到问题,构建与生成语言模型的提问模板,解析生成语言模型结果,执行结果中的命令,进行下一轮交互,直到找到问题。
6、优选地,所述步骤s1包括如下步骤:
7、步骤s1.1:构建知识库的功能-命令类数据集,其中每一条数据由功能描述和对应的命令两部分组成;
8、步骤s1.2:构建知识库的返回值-分析数据集,其中每一条数据由执行返回值和分析两个部分组成;
9、步骤s1.3:构建知识库的特征-结论数据集,其中每一条数据由特征和结论两部分组成;
10、步骤s1.4:数据集扩充,对于步骤s1.2和步骤s1.3产生的数据集合进行扩充,扩充方法包括数据中的文件名替换、ip替换、端口替换和序号替换。
11、优选地,所述步骤s2包括如下步骤:
12、步骤s2.1:合并步骤s1.1、步骤s1.2、步骤s1.3的数据,将其作为训练数据集,对于训练数据集,打乱训练数据集中的数据,使得三类数据集随机混合;
13、步骤s2.2:构建tshark诊断语言模型,选择一个开源的本地大语言模型,使用lora方法构和步骤s2.1的训练集合训练本地大语言模型,训练结果即为tshark诊断语言模型。
14、优选地,所述步骤s3包括如下步骤:
15、步骤s3.1:构建模型交互模块,向tshark诊断语言模型发送输入、接收输出;
16、步骤s3.2:构建命令执行模块,执行tshark命令,并捕获命令的输出;
17、步骤s3.3:构建诊断控制模块并诊断,控制模块调度使用模型交互模块和命令执行模块完成数据包的诊断。
18、优选地,所述步骤s3.3包括如下步骤:
19、步骤s3.3.1:构建空的数组变量feature_list,存储已经发现的特征;构建空的数组变量task_list,用于待执行的内容;构建空的to_analysis_list数组,存储待分析的命令执行结果;
20、步骤s3.3.2:检查task_list是否为空,如果空则打印数据包无问题并跳转到步骤s3.3.5,如果不为空,取出第一个元素,记为task_text;使用模型交互模块,向tshark诊断语言模型发送task_text,得到command_json格式的返回,使用命令执行模块逐一执行command_json格式中的command部分得到输出,在输出的起始添加字符串分析command的执行结果:\n”,得到的结果文本内容记为command_resp_content,将每一条命令的执行结果添加入to_analysis_list;
21、步骤s3.3.3:检查to_analysis_list,如果空则跳转步骤s3.3.2;如果非空,取出第一个元素,记为command_resp_content;使用模型交互模块,向tshark诊断语言模型发送command_resp_content,得到analysis_json格式的返回;如果返回中的next_requests非空,加入task_list;如果返回中的fault部分true,将其feature部分加入feature_list;如果返回中的fault部分为false,重复执行步骤s3.3.3;
22、步骤s3.3.4:将task_list中的字符串使用分号连结为一个长字符串,在字符串的最初加上下列特征是否能给出问题结论,构成请求字符串,记为find_root_cause_req;使用模型交互模块,将find_root_cause_req发送给tshark诊断语言模型得到root_cause_json格式的返回,如果返回中found_root_cause部分为true,打印root_cause部分,跳转到步骤s3.3.5;
23、步骤s3.3.5:诊断结束。
24、本发明还提供一种基于生成语言模型的网络数据包分析系统,所述系统包括如下模块:
25、模块m1:构建tshark诊断知识库,所述知识库包含功能-命令数据集、返回值-分析数据集及特征-结论数据集;
26、模块m2:构建tshark诊断语言模型,将知识库中的数据转换为语言模型训练样本的格式,混合模块m1中的功能-命令数据集、返回值-分析数据集及特征-结论数据集的样本数据,向模型灌输知识;
27、模块m3:构建诊断代理模块,分析数据包并找到问题,构建与生成语言模型的提问模板,解析生成语言模型结果,执行结果中的命令,进行下一轮交互,直到找到问题。
28、优选地,所述模块m1包括如下模块:
29、模块m1.1:构建知识库的功能-命令类数据集,其中每一条数据由功能描述和对应的命令两部分组成;
30、模块m1.2:构建知识库的返回值-分析数据集,其中每一条数据由执行返回值和分析两个部分组成;
31、模块m1.3:构建知识库的特征-结论数据集,其中每一条数据由特征和结论两部分组成;
32、模块m1.4:数据集扩充,对于模块m1.2和模块m1.3产生的数据集合进行扩充,扩充系统包括数据中的文件名替换、ip替换、端口替换和序号替换。
33、优选地,所述模块m2包括如下模块:
34、模块m2.1:合并模块m1.1、模块m1.2、模块m1.3的数据,将其作为训练数据集,对于训练数据集,打乱训练数据集中的数据,使得三类数据集随机混合;
35、模块m2.2:构建tshark诊断语言模型,选择一个开源的本地大语言模型,使用lora系统构和模块m2.1的训练集合训练本地大语言模型,训练结果即为tshark诊断语言模型。
36、优选地,所述模块m3包括如下模块:
37、模块m3.1:构建模型交互模块,向tshark诊断语言模型发送输入、接收输出;
38、模块m3.2:构建命令执行模块,执行tshark命令,并捕获命令的输出;
39、模块m3.3:构建诊断控制模块并诊断,控制模块调度使用模型交互模块和命令执行模块完成数据包的诊断。
40、优选地,所述模块m3.3包括如下模块:
41、模块m3.3.1:构建空的数组变量feature_list,存储已经发现的特征;构建空的数组变量task_list,用于待执行的内容;构建空的to_analysis_list数组,存储待分析的命令执行结果;
42、模块m3.3.2:检查task_list是否为空,如果空则打印数据包无问题并跳转到模块m3.3.5,如果不为空,取出第一个元素,记为task_text;使用模型交互模块,向tshark诊断语言模型发送task_text,得到command_json格式的返回,使用命令执行模块逐一执行command_json格式中的command部分得到输出,在输出的起始添加字符串分析command的执行结果:\n”,得到的结果文本内容记为command_resp_content,将每一条命令的执行结果添加入to_analysis_list;
43、模块m3.3.3:检查to_analysis_list,如果空则跳转模块m3.3.2;如果非空,取出第一个元素,记为command_resp_content;使用模型交互模块,向tshark诊断语言模型发送command_resp_content,得到analysis_json格式的返回;如果返回中的next_requests非空,加入task_list;如果返回中的fault部分true,将其feature部分加入feature_list;如果返回中的fault部分为false,重复执行模块m3.3.3;
44、模块m3.3.4:将task_list中的字符串使用分号连结为一个长字符串,在字符串的最初加上下列特征是否能给出问题结论,构成请求字符串,记为find_root_cause_req;使用模型交互模块,将find_root_cause_req发送给tshark诊断语言模型得到root_cause_json格式的返回,如果返回中found_root_cause部分为true,打印root_cause部分,跳转到模块m3.3.5;
45、模块m3.3.5:诊断结束。
46、与现有技术相比,本发明具有如下的有益效果:
47、1、本发明通过给出方法,通过向本地生成语言模型灌输“不同任务的tshark命令”、“不同tshark命令执行结果的说明分析”构建“tshark诊断语言模型”;通过构建“诊断代理模块”与“tshark诊断语言模型”进行多轮交互,每一轮完成上一轮tshark输出结果的理解、下一轮tshark命令的生成,直至发现网络数据包中的问题;
48、2、本发明实现了网络数据包的自动分析,节约了人力成本;
49、3、本发明通过智能代理与本地生成语言模型交互进行诊断,执行速度相对人力根块、检查更全面;
50、4、本发明可以通过向生成语言模型中灌输更多的tshark命令、执行结果的理解,不断地提高系统的诊断能力。
1.一种基于生成语言模型的网络数据包分析方法,其特征在于,所述方法包括如下步骤:
2.根据权利要求1所述的基于生成语言模型的网络数据包分析方法,其特征在于,所述步骤s1包括如下步骤:
3.根据权利要求1所述的基于生成语言模型的网络数据包分析方法,其特征在于,所述步骤s2包括如下步骤:
4.根据权利要求1所述的基于生成语言模型的网络数据包分析方法,其特征在于,所述步骤s3包括如下步骤:
5.根据权利要求4所述的基于生成语言模型的网络数据包分析方法,其特征在于,所述步骤s3.3包括如下步骤:
6.一种基于生成语言模型的网络数据包分析系统,其特征在于,所述系统包括如下模块:
7.根据权利要求6所述的基于生成语言模型的网络数据包分析系统,其特征在于,所述模块m1包括如下模块:
8.根据权利要求6所述的基于生成语言模型的网络数据包分析系统,其特征在于,所述模块m2包括如下模块:
9.根据权利要求6所述的基于生成语言模型的网络数据包分析系统,其特征在于,所述模块m3包括如下模块:
10.根据权利要求9所述的基于生成语言模型的网络数据包分析系统,其特征在于,所述模块m3.3包括如下模块: