CN115086001B - 采样数据缓存方法、装置及存储介质 - Google Patents

采样数据缓存方法、装置及存储介质 Download PDF

Info

Publication number
CN115086001B
CN115086001B CN202210654566.0A CN202210654566A CN115086001B CN 115086001 B CN115086001 B CN 115086001B CN 202210654566 A CN202210654566 A CN 202210654566A CN 115086001 B CN115086001 B CN 115086001B
Authority
CN
China
Prior art keywords
address
linked list
sampling data
data frame
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210654566.0A
Other languages
English (en)
Other versions
CN115086001A (zh
Inventor
陈泽楠
王光辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202210654566.0A priority Critical patent/CN115086001B/zh
Publication of CN115086001A publication Critical patent/CN115086001A/zh
Application granted granted Critical
Publication of CN115086001B publication Critical patent/CN115086001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list

Abstract

本申请涉及一种采样数据缓存方法、装置及存储介质,该方法包括:获取至少一个采样数据帧和对应的标识信息,所述标识信息用于标识所述采样数据帧所属的数据包;按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间;基于所述标识信息确定所述采样数据帧对应的单向链表是否存在,所述单向链表用于关联同一数据包的采样数据帧;在存在的情况下,将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址;在不存在的情况下,创建对应的单向链表,并将所述单向链表的表头地址设置为所述采样数据帧写入的缓存空间地址,降低了写入和读取的复杂度,提高了缓存效率,降低了缓存资源的占用率。

Description

采样数据缓存方法、装置及存储介质
技术领域
本申请涉及信息处理技术领域,特别是涉及一种采样数据缓存方法、装置及存储介质。
背景技术
在蜜罐或EDR主机入侵检测中,经常需要对特定攻击记录相关联的原始网络流量做样本采集,即在确认特定的网络攻击记录发生后,对网络攻击发生过程期间的流量做样本采集,因此需要对特定攻击的流量进行缓存。但该特定攻击的流量对应的网络四元组往往不是固定的,因此需要将流量扩展到更大范围的非特定流量进行缓存,并在非特定流量中进行筛选获取有效信息。对网络连接众多但存储资源有限的蜜罐环境来说,这一需求容易导致缓存资源不足。如果盲目对流量进行缓存而不释放占用的资源,蜜罐中其他软件的运行受到影响,会导致蜜罐无法正常运行。
针对相关技术中存在的由于对攻击记录的流量样本进行动态采集导致的缓存资源不足的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种采样数据缓存方法、装置及存储介质,以解决相关技术中存在的由于对攻击记录的流量样本进行动态采集导致的缓存资源不足的问题。
第一个方面,本申请提供了一种采样数据缓存方法,所述方法包括:
获取至少一个采样数据帧和对应的标识信息,所述标识信息用于标识所述采样数据帧所属的数据包;
按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间;
基于所述标识信息确定所述采样数据帧对应的单向链表是否存在,所述单向链表用于关联同一数据包的采样数据帧;
在存在的情况下,将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址;
在不存在的情况下,创建对应的单向链表,并将所述单向链表的表头地址设置为所述采样数据帧写入的缓存空间地址。
在其中的一些实施例中,所述缓存空间按照循环数组排序,用于存放所述采样数据帧和所述采样数据帧对应的单向链表的下一节点地址;所述按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间包括:
确定所述循环数组中待写入的缓存空间;
在所述缓存空间不为空的情况下,读取所述缓存空间中存放的待覆盖地址,将所述缓存空间对应的单向链表的表头地址更新为所述待覆盖地址;
将获取时间最早的采样数据帧写入所述缓存空间。
在其中的一些实施例中,所述单向链表的表头地址、表尾地址存储在哈希字典中,所述将所述缓存空间对应的单向链表的表头地址更新为所述待覆盖地址包括:
获取所述待写入的缓存空间对应的待写入地址;
将所述待写入地址作为表头地址查询所述哈希字典,获取对应的单向链表;
将哈希字典中所述单向链表对应的表头地址更新为所述待覆盖地址。
在其中的一些实施例中,当读取缓存在所述循环数组中的数据包内容时,所述方法还包括:
基于所述数据包的标识信息生成对应的哈希值;
以所述哈希值为检索字段在所述哈希字典中查询对应的单向链表;
在所述单向链表存在的情况下,读取所述单向链表的表头地址对应的缓存空间中的采样数据帧,并根据所述缓存空间中存放的下一节点地址依次读取对应的采样数据帧,直至所述单向链表结束,获取所述数据包的内容;删除所述哈希字典中的所述哈希值和所述单向链表的表头地址、表尾地址;
在所述单向链表不存在的情况下,确定所述数据包的所有采样数据帧均被覆盖。
在其中的一些实施例中,所述将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址包括:
基于所述采样数据帧对应的标识信息在所述哈希字典中获取对应的单向链表;
将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址。
在其中的一些实施例中,在所述将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址之前,所述方法还包括:
将所述采样数据帧写入的缓存空间地址,写入所述单向链表的表尾地址对应的缓存空间中。
在其中的一些实施例中,所述按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间包括:
将所述缓存空间的地址与所述循环数组的下标一一对应;
将按照获取时间顺序排列的所述采样数据帧,按照所述下标从小到大的顺序依次写入对应的地址;
当所述地址对应的下标为所述循环数组的最大下标时,重新从所述循环数组的最小下标对应的地址开始写入。
在其中的一些实施例中,所述采样数据为网络流量的采样数据,所述标识信息为所述网络流量对应的四元组:源地址、源端口、目的地址和目的端口。
第二个方面,本申请提供了一种采样数据缓存装置,所述采样数据缓存装置包括:
第一获取模块,用于获取至少一个采样数据帧和对应的标识信息,所述标识信息用于标识所述采样数据帧所属的数据包;
第一写入模块,用于按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间;
第一确定模块,用于基于所述标识信息确定所述采样数据帧对应的单向链表是否存在,所述单向链表用于关联同一数据包的采样数据帧;
第一更新模块,用于在存在的情况下,将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址;
第一创建模块,用于在不存在的情况下,创建对应的单向链表,并将所述单向链表的表头地址设置为所述采样数据帧写入的缓存空间地址。
第三个方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一个方面所述的采样数据缓存方法的步骤。
与相关技术相比,在本实施例中提供的采样数据缓存方法,通过获取采样数据帧,将获取的采样数据帧按照时间顺序写入对应的缓存空间,预先设置的缓存空间限定了采样数据帧的缓存数量和大小,限制了在高并发场景下的内存占用导致缓存资源不足影响其他服务的问题;写入时按照固定顺序依次写入,不需要判断该缓存空间是否为空,提高了写入效率;通过确定对应的单向链表是否存在,根据确定结果对单向链表进行创建或更新,以实现通过标识信息、表头地址和表尾地址关联单向链表和采样数据帧,对采样数据帧的缓存地址进行查询和读取,降低了写入和读取的复杂度以提高读写效率,降低了缓存资源占用率,有效解决了对流量样本进行动态采集导致的缓存资源不足的问题。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是一个实施例中采样数据缓存方法的硬件结构框图;
图2是一个实施例中采样数据缓存方法的流程图;
图3是一个实施例中通过循环数组缓存的采样数据缓存方法的流程图;
图4是一个实施例中通过哈希字典索引的采样数据缓存方法的流程图;
图5是一个实施例中读取缓存的采样数据缓存方法的流程图;
图6是一个优选实施例的采样数据缓存方法的流程图;
图7是一个实施例中采样数据缓存装置的结构框图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
在本实施例中提供的方法实施例可以在终端、计算机、服务器或者类似的运算装置中执行。比如在计算机上运行,图1是一个实施例中采样数据缓存方法的计算机的硬件结构框图。如图1所示,计算机可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述计算机还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机的结构造成限制。例如,计算机还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的采样数据缓存方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络包括计算机的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种采样数据缓存方法,图2是一个实施例中采样数据缓存方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,获取至少一个采样数据帧和对应的标识信息,该标识信息用于标识该采样数据帧所属的数据包。
在不同的业务场景中,采样数据的大小各不相同。为了能够存入统一大小的缓存空间,可以以数据帧为单位进行存储。每一数据帧的大小可以根据缓存空间的实际情况设置。在获取采样数据时,也可以使用该数据帧为单位进行获取,这样就可以实现获取采样数据后无需进一步处理就可以直接存入缓存空间。在实际应用中,还可能出现属于不同数据包的采样数据帧混合在一起获取的情况。即根据获取时间顺序,数据帧可以依次为A1,B1,C1,A2,C2,C3,B1等,其中A、B、C为不同的采样数据包。为了区分不同的数据包,可以通过与采样数据帧同时获取的标识信息进行区分。
步骤S202,按照获取的时间顺序,将该至少一个采样数据帧依次写入对应的缓存空间。
在设备的存储空间中预先设置一个缓存空间,该设备可以是运行该采样数据缓存方法的设备,也可以是与运行该方法的处理器进行通信连接的远程存储设备。缓存空间的大小根据实际需要确定,避免过小影响采样数据的存储有效性,过大影响其他服务的运行。将采样数据帧按照获取时间顺序依次写入对应的缓存空间,该缓存空间的排序方法在本实施例中不进行限定。写入时不需要确定该缓存空间是否为空,在不为空的情况下也可以覆盖该缓存空间中的原有数据。
步骤S203,基于该标识信息确定采样数据帧对应的单向链表是否存在,该单向链表用于关联同一数据包的采样数据帧。
由于采样数据帧按照获取时间顺序依次存入缓存空间,因此,属于同一数据包的不同采样数据帧可能存入缓存空间的不同地址,相互之间并不相邻。为了读取同一数据包的不同采样数据帧的内容,引入单向链表对这些数据帧进行关联。单向链表的访问从表头节点开始,每一个节点都有指针指向链表的下一个节点,而最后一个指针指向NULL。在本实施例中,一个单向链表用于关联一个数据包,通过指针标识该数据包的下一采样数据帧的缓存空间地址。单向链表的表头地址和表尾地址单独存储,并与该数据包的标识信息进行关联,关联方式在本实施例中不进行限定。
当一个采样数据帧写入缓存空间后,需要更新该采样数据帧对应的单向链表的内容,可以通过标识信息查询该单向链表是否已经存在。
步骤S204,在存在的情况下,将该单向链表的表尾地址更新为该采样数据帧写入的缓存空间地址。
如果单向链表已存在,说明该采样数据帧不是该数据包的首个数据帧。且该采样数据帧的写入时间最近,因此应该是该单向链表的表尾对应的数据帧。将该采样数据帧写入的缓存空间地址作为单向链表的表尾地址进行更新。
步骤S205,在不存在的情况下,创建对应的单向链表,并将该单向链表的表头地址设置为该采样数据帧写入的缓存空间地址。
如果单向链表不存在,说明该采样数据帧是该数据包的首个数据帧,此时应创建对应的单向链表,将该单向链表和该采样数据帧的标识信息进行关联,将该采样数据帧写入的缓存空间地址作为该单向链表的表头地址进行存储。
本实施例提供的采样数据缓存方法,通过获取采样数据帧,将获取的采样数据帧按照时间顺序写入对应的缓存空间,预先设置的缓存空间限定了采样数据帧的缓存数量和大小,限制了在高并发场景下的内存占用导致影响其他服务的问题;写入时按照固定顺序依次写入,不需要判断该缓存空间是否为空,提高了写入效率;确定对应的单向链表是否存在,该单向链表关联同一数据包的采样数据帧;通过对单向链表进行创建和更新,通过标识信息、表头地址和表尾地址关联单向链表和采样数据帧,对采样数据帧的缓存地址进行查询和读取,降低了写入和读取的复杂度,提高了缓存效率,同时降低了缓存和CPU资源的占用率,有效解决了对流量样本进行动态采集导致的硬件资源不足的问题。
在其中的一些实施例中,缓存空间按照循环数组排序,用于存放采样数据帧和该采样数据帧对应的单向链表的下一节点地址。图3是一个实施例中通过循环数组缓存的采样数据缓存方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301,确定该循环数组中待写入的缓存空间。
循环数组是指一个数组中最后一个元素的下一个元素是整个数组的第一个元素,即通过循环的方式对待写入的缓存空间进行排序。可以预先设定循环数组的元素数量,该数量与缓存空间的数量一致,将缓存空间的地址作为循环数组的元素,与循环数组的下标一一对应。这样就可以根据循环数组的排序方式,依次将采样数据帧写入对应的缓存空间中。可以通过指针来确定待写入的下一个缓存空间。
步骤S302,在该缓存空间不为空的情况下,读取该缓存空间中存放的待覆盖地址,将该缓存空间对应的单向链表的表头地址更新为该待覆盖地址。
当待写入的缓存空间不为空的情况下,即该缓存空间已经存放了之前获取的采样数据帧和该采样数据帧对应的单向链表的下一节点地址。为了通过较小的缓存空间实现更高的缓存效率,本实施例提供的采样数据缓存方法允许对已有采样数据进行覆盖。由于采样数据帧的缓存和覆盖都是基于循环数组的先入先出顺序,因此该缓存空间地址是对应的单向链表的表头地址。
当该数据帧即将被覆盖时,即对应的数据包的第一个数据帧内容丢失,但该数据包的其他采样数据帧还存在。此时需要更新对应的单向链表的表头地址,以供后续进行数据读取操作。如果不更新该表头地址,则该表头地址对应的缓存空间存储的采样数据帧内容不对应,会造成数据读取的错误。而该缓存空间中存放的待覆盖地址就是该单向链表的下一个节点的地址,直接将该待覆盖地址更新为该单向链表的表头地址即可。
步骤S303,将获取时间最早的采样数据帧写入该缓存空间。
根据获取时间顺序,将采样数据帧写入该缓存空间,并更新该采样数据帧对应的单向链表表头或表尾地址。
本实施例提供的采样数据缓存方法,通过循环数组对缓存空间进行写入操作的排序,实现先写入的缓存空间先覆盖,提高写入操作的效率,在覆盖已有数据的情况下,保证了被覆盖的采样数据帧是对应数据包的首个数据帧,在允许部分数据被覆盖的情况下,保证剩余数据帧的连续性,以提高剩余数据帧的使用价值;通过在缓存空间中保存采样数据帧对应的单向链表的下一节点地址,实现了基于单向链表的数据包缓存,为后续执行数据包的连续读取操作提供了可能;另外在采样数据帧被覆盖时,还可以根据待覆盖地址更新对应的单向链表表头地址,以实现单向链表随缓存空间写入情况的变化及时更新。
在其中的一些实施例中,单向链表的表头地址、表尾地址存储在哈希字典中,涉及通过哈希字典索引单向链表的详细过程。图4是一个实施例中通过哈希字典索引的采样数据缓存方法的流程图,如图4所示,该流程包括如下步骤:
步骤S401,获取待写入的缓存空间对应的待写入地址。
步骤S402,将该待写入地址作为表头地址查询哈希字典,获取对应的单向链表。
在采样数据的缓存和读取过程中,如果每次写入或读取都需要遍历循环数组,则系统开销过大,该情况下可以使用哈希字典作为单向链表的表头地址或表尾地址的快速查询方式。哈希字典通过哈希表来存储数据,读取的时候也是通过哈希表来获取对应的值。对每一个数据包,哈希表中都存有一个对应的单向链表,包括该单向链表的哈希值、表头地址和表尾地址。该哈希值基于数据包的标识信息生成。
当需要更新该缓存空间中被覆盖的数据帧对应的单向链表表头地址时,更新前的单向链表表头地址就是该缓存空间地址,因此可以根据该缓存空间地址在哈希字典中查询,找到对应的单向链表。
步骤S403,将哈希字典中该单向链表对应的表头地址更新为该待覆盖地址。
本实施例提供的采样数据缓存方法,通过哈希字典建立数据包的标识信息、单向链表的表头地址和表尾地址三者之间的关联,通过低复杂度的方式使单向链表能够随着缓存空间的写入情况及时进行更新,提供了对单向链表简单快捷的查询方式,提高了采样数据的存取效率。
在其中的一些实施例中,还涉及缓存在循环数组中的数据包内容的读取方法。图5是一个实施例中读取缓存的采样数据缓存方法的流程图。如图5所示,该流程包括如下步骤:
步骤S501,基于该数据包的标识信息生成对应的哈希值。
哈希字典中包括每个单向链表的哈希值、表头地址和表尾地址。该哈希值基于数据包的标识信息生成,生成方法可以是通过哈希函数将标识信息通过散列算法变换成固定长度的哈希值。
读取缓存在循环数组中的采样数据帧内容时,通常根据标识信息读取该标识信息对应的数据包,也可以根据该数据包对应的单向链表的表头地址或表尾地址进行查询。
步骤S502,以该哈希值为检索字段在哈希字典中查询对应的单向链表。
步骤S503,在该单向链表存在的情况下,读取该单向链表的表头地址对应的缓存空间中的采样数据帧,并根据缓存空间中存放的下一节点地址依次读取对应的采样数据帧,直至该单向链表结束,获取该数据包的内容;删除哈希字典中的该哈希值和该单向链表的表头地址、表尾地址。
如果该单向链表存在,说明该数据包的内容全部或部分地缓存在循环数组中。根据哈希字典中存储的单向链表的表头地址,获取表头节点对应的缓存空间地址,读取该缓存空间的采样数据帧和下一节点地址;然后根据该单向链表的每一个节点地址获取整个数据包的内容。读取完成后,该数据包不再具有读取需求,因此将哈希字典中该数据包对应的值删除,释放缓存空间。
步骤S504,在该单向链表不存在的情况下,确定该数据包的所有采样数据帧均被覆盖。
如果该单向链表不存在,则说明该数据包的所有采样数据帧均被覆盖,无法获取该数据包的内容。
本实施例提供的采样数据缓存方法,通过标识信息在哈希字典中获取对应的单向链表,在单向链表存在的情况下,根据单向链表提供的节点地址找到每个节点对应的缓存空间,读取对应的采样数据帧,并释放缓存空间;在单向链表不存在的情况下,确定该数据包的所有采样数据帧均被覆盖,在允许部分采样数据丢弃无法获取的情况下,通过哈希表和单向链表读取采样数据,提高了缓存数据的读取效率,降低了读取操作的复杂度。
在其中的一些实施例中,还涉及向缓存空间写入数据后的单向链表更新的详细流程。将单向链表的表尾地址更新为采样数据帧写入的缓存空间地址包括如下步骤:
S11,基于采样数据帧对应的标识信息在哈希字典中获取对应的单向链表。
将采样数据帧写入缓存空间后,需要同步更新对应的单向链表。可以根据该采样数据帧的标识信息,通过步骤S501~S502的方法,获取与标识信息对应的单向链表。
S12,将该单向链表的表尾地址更新为该采样数据帧写入的缓存空间地址。
由于该写入操作是时间上最近的写入操作,因此在该单向链表存在的情况下,该操作对应的缓存空间地址一定是单向链表的表尾地址。因此将该单向链表的表尾地址更新为该采样数据帧写入的缓存空间地址。
本实施例提供的采样数据缓存方法,提供了缓存空间写入数据后的单向链表同步的具体方法,将单向链表与缓存空间之间进行准确的关联,提高了基于单向链表的查询和读取操作的效率。
在一些实施例中,在将单向链表的表尾地址更新为采样数据帧写入的缓存空间地址之前,该采样数据缓存方法还包括:
将采样数据帧写入的缓存空间地址,写入单向链表的表尾地址对应的缓存空间中。
每个缓存空间除了保存采样数据帧以外,还保存采样数据帧对应的单向链表的下一节点地址。当一个新的采样数据帧写入缓存空间后,对应的单向链表的表尾地址发生了变化,同时也意味着该单向链表中,该采样数据帧前一个节点的指针也应该同步变化。在此之前,前一个节点为该单向链表的表尾节点,因此该指针指向NULL,新的采样数据帧写入后,该指针应指向新的采样数据帧所在的地址,因此,需要在单向链表表尾地址更新之前,将该缓存空间地址写入单向链表的表尾地址对应的缓存空间中。
本实施例提供的采样数据缓存方法,在采样数据帧写入缓存空间后及时修改单向链表表尾节点的指针指向,使单向链表每一个节点的指针指向能够跟随缓存空间的变化及时更新,将单向链表与缓存空间之间进行准确的关联,提高了基于单向链表的查询和读取操作的效率。
在一些实施例中,涉及基于循环数组的采样数据写入的详细流程。按照获取的时间顺序,将至少一个采样数据帧依次写入对应的缓存空间的流程包括如下步骤:
S21,将缓存空间的地址与循环数组的下标一一对应。
S22,将按照获取时间顺序排列的采样数据帧,按照下标从小到大的顺序依次写入对应的地址。
S23,当地址对应的下标为循环数组的最大下标时,重新从循环数组的最小下标对应的地址开始写入。
本实施例提供的采样数据缓存方法,将缓存空间的地址作为循环数组的元素,与循环数组的下标一一对应,根据循环数组的排序方式,依次将采样数据帧写入对应的缓存空间中,并在写入到循环数组的尾部时自动跳转到头部进行写入,给出了通过循环数组进行数据帧写入的具体方法,保证了写入顺序和覆盖顺序的一致性,在覆盖已有数据的情况下,保证了被覆盖的采样数据帧是对应数据包的首个数据帧,在允许部分数据被覆盖的情况下,保证剩余数据帧的连续性,以提高剩余数据帧的使用价值。
在一些实施例中,采样数据为网络流量的采样数据,标识信息为该网络流量对应的四元组:源地址、源端口、目的地址和目的端口。
在对攻击记录相关联的网络流量进行采样的场景中,采样数据为网络流量报文,每个标识信息,即网络四元组对应一个完整的报文数据包,来标识该数据包所属的网络连接。在该场景中,并非所有缓存的报文都会被消费,且在实际攻击记录发生前也无法判断缓存的报文是否为攻击报文,因此允许在缓存空间已满的情况下对先进入缓存空间的数据进行覆盖,以提高采样数据的缓存和读取效率,减少对硬件资源的占用。
下面通过优选实施例对本实施例进行描述和说明。
本优选实施例中的采样数据为网络流量报文,标识信息为与报文对应的四元组:源地址、源端口、目的地址和目的端口。同一报文数据包的采样数据帧用单向链表进行关联。预先设置固定大小的缓存空间用于缓存采样数据,并按照循环数组排序,每个缓存空间存放一个采样数据帧和该采样数据帧对应的单向链表的下一节点地址。通过哈希字典对单向链表进行快速查询,哈希字典存储单向链表的哈希值、表头地址和表尾地址,其中哈希值由四元组生成。
图6是一个优选实施例的采样数据缓存方法的流程图。如图6所示,该流程包括如下步骤:
S601,获取至少一个采样数据帧和对应的标识信息,该标识信息用于标识该采样数据帧所属的数据包;
S602,根据循环数组的下标与缓存空间地址的对应关系,确定待写入的缓存空间地址;
S603,在该缓存空间不为空的情况下,读取该缓存空间中存放的待覆盖地址;
S604,将该待写入的缓存空间地址作为表头地址查询哈希字典,获取对应的单向链表;
S605,将该单向链表对应的表头地址更新为该待覆盖地址;
S606,将获取时间最早的采样数据帧写入该缓存空间;
S607,基于该采样数据帧的标识信息生成对应的哈希值;
S608,以该哈希值为检索字段在哈希字典中查询对应的单向链表,确定该采样数据帧对应的单向链表是否存在;
S609,在存在的情况下,将该采样数据帧写入的缓存空间地址,写入单向链表的表尾地址对应的缓存空间中;
S610,将该单向链表的表尾地址更新为该采样数据帧写入的缓存空间地址;
S611,在不存在的情况下,创建对应的单向链表,并将单向链表的表头地址设置为采样数据帧写入的缓存空间地址;
S612,当读取缓存在循环数组中的数据包内容时,基于数据包的标识信息生成对应的哈希值;
S613,根据该哈希值确定对应的单向链表是否存在;
S614,在存在的情况下,读取单向链表的表头地址对应的缓存空间中的采样数据帧,并根据缓存空间中存放的下一节点地址依次读取对应的采样数据帧,直至单向链表结束,获取数据包的内容;删除哈希字典中的该哈希值和该单向链表的表头地址、表尾地址;
S615,在单向链表不存在的情况下,确定数据包的所有采样数据帧均被覆盖。
通过上述步骤S601至S615,通过预先设置的缓存空间限定了缓存空间大小,限制了在高并发场景下的内存占用导致影响其他服务的问题;通过循环数组对缓存空间进行写入操作的排序,实现先写入的缓存空间先覆盖,提高写入操作的效率;在覆盖已有数据的情况下,保证了被覆盖的采样数据帧是对应数据包的首个数据帧,在允许部分数据被覆盖的情况下,保证剩余数据帧的连续性,以提高剩余数据帧的使用价值;写入时按照固定顺序依次写入,不需要判断该缓存空间是否为空,提高了写入效率;通过单向链表关联同一数据包的采样数据帧,通过哈希字典建立标识信息、表头地址和表尾地址的关联并对采样数据帧进行查询,读取缓存数据后释放对应的缓存空间,降低了写入和读取的复杂度,提高了缓存效率,降低了内存和CPU资源的占用率,有效解决了对流量样本进行动态采集导致的硬件资源不足的问题。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一些实施例中,本申请还提供了一种采样数据缓存装置,该采样数据缓存装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。
在一些实施例中,图7是一个实施例的采样数据缓存装置的结构框图,如图7所示,该装置包括:
第一获取模块71,用于获取至少一个采样数据帧和对应的标识信息,该标识信息用于标识该采样数据帧所属的数据包;
第一写入模块72,用于按照获取的时间顺序,将至少一个采样数据帧依次写入对应的缓存空间;
第一确定模块73,用于基于该标识信息确定该采样数据帧对应的单向链表是否存在,该单向链表用于关联同一数据包的采样数据帧;
第一更新模块74,用于在存在的情况下,将单向链表的表尾地址更新为该采样数据帧写入的缓存空间地址;
第一创建模块75,用于在不存在的情况下,创建对应的单向链表,并将单向链表的表头地址设置为采样数据帧写入的缓存空间地址。
本实施例中的采样数据缓存装置,通过第一获取模块71获取采样数据帧,通过第一写入模块72将获取的采样数据帧按照时间顺序写入对应的缓存空间,预先设置的缓存空间限定了采样数据帧的缓存数量和大小,限制了在高并发场景下的内存占用导致影响其他服务的问题;写入时按照固定顺序依次写入,不需要判断该缓存空间是否为空,提高了写入效率;通过第一确定模块73确定对应的单向链表是否存在,该单向链表关联同一数据包的采样数据帧;通过第一更新模块74和第一创建模块75对单向链表进行创建和更新,通过标识信息、表头地址和表尾地址关联单向链表和采样数据帧,对采样数据帧的缓存地址进行查询和读取,降低了写入和读取的复杂度,提高了缓存效率,降低了内存和CPU资源的占用率,有效解决了对流量样本进行动态采集导致的硬件资源不足的问题。
在其中的一些实施例中,缓存空间按照循环数组排序,用于存放采样数据帧和该采样数据帧对应的单向链表的下一节点地址,第一写入模块包括第二确定模块、第二更新模块和第二写入模块;第二确定模块用于确定循环数组中待写入的缓存空间;第二更新模块用于在缓存空间不为空的情况下,读取该缓存空间中存放的待覆盖地址,将该缓存空间对应的单向链表的表头地址更新为待覆盖地址;第二写入模块用于将获取时间最早的采样数据帧写入缓存空间。
本实施例中的采样数据缓存装置,通过第二确定模块确定待写入的缓存空间,通过循环数组对缓存空间进行写入操作的排序,实现先写入的缓存空间先覆盖,提高写入操作的效率,在覆盖已有数据的情况下,保证了被覆盖的采样数据帧是对应数据包的首个数据帧,在允许部分数据被覆盖的情况下,保证剩余数据帧的连续性,以提高剩余数据帧的使用价值;通过在缓存空间中保存采样数据帧对应的单向链表的下一节点地址,实现了基于单向链表的数据包缓存,为后续执行数据包的连续读取操作提供了可能;通过第二更新模块在采样数据帧被覆盖时,根据待覆盖地址更新对应的单向链表表头地址,以实现单向链表随缓存空间写入情况的变化及时更新,通过第二写入模块将获取时间最早的采样数据帧写入缓存空间,执行缓存操作。
在其中的一些实施例中,单向链表的表头地址、表尾地址存储在哈希字典中,第二更新模块包括第二获取模块、第三获取模块和第三更新模块;第二获取模块用于获取待写入的缓存空间对应的待写入地址;第三获取模块用于将待写入地址作为表头地址查询哈希字典,获取对应的单向链表;第三更新模块用于将哈希字典中该单向链表对应的表头地址更新为该待覆盖地址。
本实施例中的采样数据缓存装置,通过第二获取模块、第三获取模块,使用哈希字典建立数据包的标识信息、单向链表的表头地址和表尾地址三者之间的关联,通过第三更新模块使用低复杂度的方式使单向链表能够随着缓存空间的写入情况及时进行更新,提供了对单向链表简单快捷的查询方式,提高了采样数据的存取效率。
在其中的一些实施例中,当读取缓存在循环数组中的数据包内容时,该采样数据缓存装置还包括第一生成模块、第一查询模块、第一读取模块和第三确定模块;第一生成模块用于基于数据包的标识信息生成对应的哈希值;第一查询模块用于以该哈希值为检索字段在哈希字典中查询对应的单向链表;第一读取模块用于在该单向链表存在的情况下,读取该单向链表的表头地址对应的缓存空间中的采样数据帧,并根据缓存空间中存放的下一节点地址依次读取对应的采样数据帧,直至该单向链表结束,获取该数据包的内容;删除哈希字典中的该哈希值和该单向链表的表头地址、表尾地址;第三确定模块用于在该单向链表不存在的情况下,确定该数据包的所有采样数据帧均被覆盖。
本实施例中的采样数据缓存装置,通过第一生成模块生成标识信息对应的哈希值,通过第一查询模块在哈希字典中获取对应的单向链表,在单向链表存在的情况下,通过第一读取模块根据单向链表提供的节点地址找到每个节点对应的缓存空间,读取对应的采样数据帧,并释放缓存空间;在单向链表不存在的情况下,通过第三确定模块确定该数据包的所有采样数据帧均被覆盖,在允许部分采样数据丢弃无法获取的情况下,通过哈希表和单向链表读取采样数据,提高了缓存数据的读取效率,降低了读取操作的复杂度。
此外,结合上述实施例中提供的采样数据缓存方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种采样数据缓存方法。
需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (8)

1.一种采样数据缓存方法,其特征在于,所述方法包括:
获取至少一个采样数据帧和对应的标识信息,所述标识信息用于标识所述采样数据帧所属的数据包;
按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间,包括:所述缓存空间按照循环数组排序,用于存放所述采样数据帧和所述采样数据帧对应的单向链表的下一节点地址,所述单向链表的表头地址、表尾地址存储在哈希字典中;确定所述循环数组中待写入的缓存空间;在所述缓存空间不为空的情况下,读取所述缓存空间中存放的待覆盖地址,获取所述待写入的缓存空间对应的待写入地址;将所述待写入地址作为表头地址查询所述哈希字典,获取对应的单向链表;将哈希字典中所述单向链表对应的表头地址更新为所述待覆盖地址;将获取时间最早的采样数据帧写入所述缓存空间;
基于所述标识信息确定所述采样数据帧对应的单向链表是否存在,所述单向链表用于关联同一数据包的采样数据帧;
在存在的情况下,将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址;
在不存在的情况下,创建对应的单向链表,并将所述单向链表的表头地址设置为所述采样数据帧写入的缓存空间地址。
2.根据权利要求1所述的采样数据缓存方法,其特征在于,当读取缓存在所述循环数组中的数据包内容时,所述方法还包括:
基于所述数据包的标识信息生成对应的哈希值;
以所述哈希值为检索字段在所述哈希字典中查询对应的单向链表;
在所述单向链表存在的情况下,读取所述单向链表的表头地址对应的缓存空间中的采样数据帧,并根据所述缓存空间中存放的下一节点地址依次读取对应的采样数据帧,直至所述单向链表结束,获取所述数据包的内容;删除所述哈希字典中的所述哈希值和所述单向链表的表头地址、表尾地址;
在所述单向链表不存在的情况下,确定所述数据包的所有采样数据帧均被覆盖。
3.根据权利要求1所述的采样数据缓存方法,其特征在于,所述将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址包括:
基于所述采样数据帧对应的标识信息在所述哈希字典中获取对应的单向链表;
将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址。
4.根据权利要求1所述的采样数据缓存方法,其特征在于,在所述将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址之前,所述方法还包括:
将所述采样数据帧写入的缓存空间地址,写入所述单向链表的表尾地址对应的缓存空间中。
5.根据权利要求1所述的采样数据缓存方法,其特征在于,所述按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间包括:
将所述缓存空间的地址与所述循环数组的下标一一对应;
将按照获取时间顺序排列的所述采样数据帧,按照所述下标从小到大的顺序依次写入对应的地址;
当所述地址对应的下标为所述循环数组的最大下标时,重新从所述循环数组的最小下标对应的地址开始写入。
6.根据权利要求1所述的采样数据缓存方法,其特征在于,所述采样数据为网络流量的采样数据,所述标识信息为所述网络流量对应的四元组:源地址、源端口、目的地址和目的端口。
7.一种采样数据缓存装置,其特征在于,所述采样数据缓存装置包括:
第一获取模块,用于获取至少一个采样数据帧和对应的标识信息,所述标识信息用于标识所述采样数据帧所属的数据包;
第一写入模块,用于按照获取的时间顺序,将所述至少一个采样数据帧依次写入对应的缓存空间,包括:所述缓存空间按照循环数组排序,用于存放所述采样数据帧和所述采样数据帧对应的单向链表的下一节点地址,所述单向链表的表头地址、表尾地址存储在哈希字典中;确定所述循环数组中待写入的缓存空间;在所述缓存空间不为空的情况下,读取所述缓存空间中存放的待覆盖地址,获取所述待写入的缓存空间对应的待写入地址;将所述待写入地址作为表头地址查询所述哈希字典,获取对应的单向链表;将哈希字典中所述单向链表对应的表头地址更新为所述待覆盖地址;将获取时间最早的采样数据帧写入所述缓存空间;
第一确定模块,用于基于所述标识信息确定所述采样数据帧对应的单向链表是否存在,所述单向链表用于关联同一数据包的采样数据帧;
第一更新模块,用于在存在的情况下,将所述单向链表的表尾地址更新为所述采样数据帧写入的缓存空间地址;
第一创建模块,用于在不存在的情况下,创建对应的单向链表,并将所述单向链表的表头地址设置为所述采样数据帧写入的缓存空间地址。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的采样数据缓存方法的步骤。
CN202210654566.0A 2022-06-10 2022-06-10 采样数据缓存方法、装置及存储介质 Active CN115086001B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210654566.0A CN115086001B (zh) 2022-06-10 2022-06-10 采样数据缓存方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210654566.0A CN115086001B (zh) 2022-06-10 2022-06-10 采样数据缓存方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN115086001A CN115086001A (zh) 2022-09-20
CN115086001B true CN115086001B (zh) 2024-04-09

Family

ID=83251276

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210654566.0A Active CN115086001B (zh) 2022-06-10 2022-06-10 采样数据缓存方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN115086001B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023808A (zh) * 2012-12-28 2013-04-03 南京邮电大学 基于块状链表结构的6lowpan数据包重装缓存方法
CN103678172A (zh) * 2013-12-25 2014-03-26 Tcl集团股份有限公司 一种本地数据缓存管理方法及装置
CN113535716A (zh) * 2021-06-23 2021-10-22 浙江浙大中控信息技术有限公司 一种高效的数据存储及查询管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019028682A1 (zh) * 2017-08-08 2019-02-14 深圳前海达闼云端智能科技有限公司 一种多系统共享内存的管理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023808A (zh) * 2012-12-28 2013-04-03 南京邮电大学 基于块状链表结构的6lowpan数据包重装缓存方法
CN103678172A (zh) * 2013-12-25 2014-03-26 Tcl集团股份有限公司 一种本地数据缓存管理方法及装置
CN113535716A (zh) * 2021-06-23 2021-10-22 浙江浙大中控信息技术有限公司 一种高效的数据存储及查询管理方法

Also Published As

Publication number Publication date
CN115086001A (zh) 2022-09-20

Similar Documents

Publication Publication Date Title
CN110635933B (zh) 用于管理sdn的网络的装置、控制方法及记录介质
US9584332B2 (en) Message processing method and device
US9071525B2 (en) Data receiving apparatus, data receiving method, and program storage medium
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
WO2020199760A1 (zh) 数据存储方法、存储器和服务器
US7751346B2 (en) Apparatus for searching TCP and UDP sockets
CN113900972A (zh) 一种数据传输的方法、芯片和设备
CN114244752A (zh) 流量统计方法、装置和设备
CN113596017A (zh) 一种协议解析方法、装置、软网关和存储介质
CN115733832A (zh) 计算设备、报文接收方法、可编程网卡及存储介质
CN113779452B (zh) 数据处理方法、装置、设备及存储介质
CN115086001B (zh) 采样数据缓存方法、装置及存储介质
CN112165505B (zh) 去中心化的数据处理方法、电子装置和存储介质
CN105939402A (zh) Mac表项的获取方法及装置
CN117435912A (zh) 基于网络数据包属性值长短特征的数据包索引与检索方法
CN116155828B (zh) 一种多个虚拟队列的报文保序方法及其装置、存储介质、电子设备
CN115955447A (zh) 一种数据传输方法、交换机及交换机系统
US20170118113A1 (en) System and method for processing data packets by caching instructions
CN108183926B (zh) 一种数据包处理方法和装置
US11038797B2 (en) Forwarding table entry access
CN112566096B (zh) Lte用户位置变更信息获取的方法、装置及设备
CN107870925B (zh) 一种字符串过滤方法和相关装置
CN116204487A (zh) 远程数据访问方法及装置
CN110019259B (zh) 分布式索引服务引擎的数据更新方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant