CN113810337A - 用于网络报文去重的方法、装置、以及存储介质 - Google Patents
用于网络报文去重的方法、装置、以及存储介质 Download PDFInfo
- Publication number
- CN113810337A CN113810337A CN202010535017.2A CN202010535017A CN113810337A CN 113810337 A CN113810337 A CN 113810337A CN 202010535017 A CN202010535017 A CN 202010535017A CN 113810337 A CN113810337 A CN 113810337A
- Authority
- CN
- China
- Prior art keywords
- queue
- message
- network
- newly received
- lock
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了用于网络报文去重的方法、装置、以及存储介质。所述方法包括:对新接收的网络报文进行解析以获取报文头和有效载荷;计算新接收的网络报文的第一哈希值,并且基于报文头中的特征信息和第一哈希值计算新接收的网络报文的第二哈希值,其中,第一哈希值是有效载荷的哈希值;使用对第二哈希值进行预定的转换之后得到的值作为索引从无锁环形队列表中找到对应的队列,其中,对应的队列中存储的每个网络报文的第二哈希值进行预定的转换之后得到的值与新接收的网络报文的第二哈希值进行预定的转换之后得到的值相同;将新接收的网络报文与对应的队列中处于预定的时间窗口内的原有的网络报文进行遍历比较以查找比较结果符合预定的条件的网络报文。
Description
技术领域
本公开总体上涉及网络通信领域中的报文处理技术,并且具体地涉及用于网络报文去重的方法、装置、以及存储介质。
背景技术
随着4G、5G时代的到来,网络的规模越来越庞大,在数据中心中10G、40G、100G等的高速流量屡见不鲜,这对用于处理这些高速流量的方法、设备等提出了更高的要求,同时也面临更多的挑战。
我们知道,在网络报文的传输过程中会不可避免地产生大量的重复报文,这些重复报文会在数据存储时造成不必要的存储空间浪费,并且也会给例如网络安全、协议分析等流量监控场景中的报文分析设备带来额外的性能消耗。
目前,对数据进行去重的方法较多为离线去重,这些方法多采用对数据进行分块以减小数据处理范围、并且对分块数据或单个报文计算消息摘要MD5值或者仅利用哈希算法等方式来对数据进行离线去重,而在例如网络转发设备上对数据进行在线去重的方法较少,并且关于如何保证去重的精度和性能(尤其对于高速流量)更是鲜有提及。
例如,申请号为201610545279.0、发明名称为“一种网络包去重方法及装置”的中国专利申请公开了一种重复报文的查找方法,该方法使用哈希计算,其主要是对报文的特定特征进行哈希计算得到哈希值,然后以计算的哈希值与被比较的报文的哈希值是否相同作为判断两个报文是否相同的依据。该方法单纯地判断两个报文的特定特征的哈希值不能实现报文的精确去重。另外,该方法也没有提出如何保证去重的性能。
发明内容
本公开涉及用于网络报文去重的方法、装置、以及存储介质。
在本公开的第一方面中,提出了一种用于网络报文去重的方法。所述方法包括:对新接收的网络报文进行解析,以获取报文头和有效载荷(payload);计算所述新接收的网络报文的第一哈希值,并且基于所获取的所述报文头中的特征信息和所计算的所述第一哈希值计算所述新接收的网络报文的第二哈希值,其中,所述第一哈希值是所获取的所述有效载荷的哈希值;使用对所述新接收的网络报文的第二哈希值进行预定的转换之后得到的值作为索引从包括用于存储网络报文的多个无锁环形队列的无锁环形队列表中找到对应的无锁环形队列,其中,所述对应的无锁环形队列中存储的每个网络报文的第二哈希值进行所述预定的转换之后得到的值与所述新接收的网络报文的第二哈希值进行所述预定的转换之后得到的值相同;将所述新接收的网络报文与所述对应的无锁环形队列中处于预定的时间窗口内的原有的网络报文进行遍历比较,以从所述对应的无锁环形队列中查找与所述新接收的网络报文的比较结果符合预定的条件的网络报文。
在本公开的第二方面中,提出了一种用于网络报文去重的装置。所述装置包括用于实现本公开的用于网络报文去重的方法的部件。
在本公开的第三方面中,提出了一种计算机装置。所述计算机装置包括处理器和存储器,所述存储器存储能够由所述处理器执行的程序,所述程序在由所述处理器执行时实现本公开的用于网络报文去重的方法。
在本公开的第四方面中,提出了一种计算机可读存储介质。所述计算机可读存储介质存储程序,所述程序在由处理器执行时实现本公开的用于网络报文去重的方法。
本公开的网络报文去重解决方案不但能够精确地查找重复报文,而且报文的去重性能(例如,重复报文的查找速度、效率等)也得到了提升,其很好地兼顾了报文去重的精度和性能。此外,本公开的网络报文去重解决方案还能够在例如网络转发设备上对报文进行在线去重,而且尤其对于高速流量报文的去重处理特别有用。
以上给出了关于本公开的简要概述,以便提供关于本公开的一些方面的基本理解。但是,应当理解,这个概述不是关于本公开的穷举性概述。它不意图用于确定本公开的关键性部分或重要部分,也不意图用于限定本公开的范围。它的目的仅仅是以简化的形式给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。
从参考附图的以下描述中,本公开的其它特征和优点将变得更清楚。
附图说明
构成本说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。参考附图,根据以下的详细描述,可以更清楚地理解本公开,其中:
图1是根据本公开的实施例的网络报文去重方法的应用场景图。
图2是根据本公开的实施例的网络报文去重方法的基本流程图。
图3是根据本公开的实施例的网络报文去重方法中的查找比较过程的详细流程图。
图4是根据本公开的实施例的网络报文去重装置的结构图。
图5是根据本公开的实施例的网络报文去重方法中使用的无锁环形队列表的示意图。
具体实施方式
下面,将参考附图详细描述本公开的示例性实施例。
需要说明的是,在以下的详细描述中,阐述了许多具体的细节以提供对描述的示例性实施例的透彻理解。但是,对于本领域技术人员而言清楚的是,描述的实施例可以在没有这些具体的细节中的一些或全部的情况下进行实施。在描述的示例性实施例中,为了避免不必要地模糊本公开的概念,一些众所周知的内容没有详细描述。
此外,本公开中呈现的方法的步骤是说明性的。在一些实施例中,这些方法可以利用没有描述的一个或多个附加的步骤完成和/或在没有讨论的一个或多个步骤的情况下完成。而且,这些方法的步骤被图示和描述的顺序也不是限制性的。
图1示出了根据本公开的实施例的网络报文去重方法的应用场景。如图1中所示,在网络转发设备101中,可以包括网络报文去重装置102,该网络报文装置102可以应用本公开的网络报文去重方法对网络报文进行去重处理。
具体地,当网络转发设备101新接收到要被转发的网络报文之后,网络报文装置102将针对该新接收的网络报文使用本公开的网络报文去重方法来查找先前是否已接收并转发相同的报文(即,重复报文)。如果找到了重复报文,则网络转发设备101对新接收的网络报文不再进行转发(例如,进行丢弃处理),否则将转发该新接收的网络报文。
在一些实施例中,网络转发设备101可以是交换机或者路由器,也可以是与交换机或者路由器在功能上等同的其它设备。
应当注意的是,图1仅示出了本公开的网络报文去重方法的应用场景的一个示例。对于本领域技术人员而言,应当理解的是,本公开的网络报文去重方法不限于这个场景,而且可以应用于需要对网络报文进行去重处理的诸多其它场景。
图2示出了根据本公开的实施例的网络报文去重方法的基本流程。如图2中所示,该网络报文去重方法包括步骤S201、S202、S203、以及S204。其中,步骤S201、S202主要涉及网络报文的解析和计算,步骤S203、S204主要涉及网络报文的查找比较。下面,将分别对这些步骤进行介绍。
本公开的网络报文去重方法的流程开始于步骤S201。在步骤S201中,当接收到需要对其查找重复报文的网络报文(即,新接收的网络报文)时,对网络报文进行解析,以获取网络报文的报文头和有效载荷。
在一些实施例中,网络报文的报文头包括数据链路层报文头、网络层报文头、以及传输层报文头。其中,数据链路层、网络层、以及传输层分别为OSI(Open SystemInterconnection)七层模型中的第二、三、四层。
接着,在步骤S202中,首先,对步骤S201中所获取的网络报文的有效载荷进行哈希计算以获得哈希值(即,第一哈希值)。
然后,基于所计算的第一哈希值以及步骤S201中所获取的网络报文头中的特征信息再次进行哈希计算以获得另一哈希值(即,第二哈希值)。
在一些实施例中,如上所述,网络报文的报文头包括数据链路层报文头、网络层报文头、以及传输层报文头,因此报文头中的特征信息可以是从数据链路层报文头的字段、网络层报文头的字段、以及传输层报文头的字段中选择的一些信息。
在一些实施例中,数据链路层报文头的字段包括源MAC地址字段、以及目的MAC地址字段。网络层报文头的字段包括IP标识字段、协议类型字段、TTL字段、IP报文头总长度字段、偏移字段、源IP地址字段、以及目的IP地址字段。传输层报文头的字段包括TCP报文头的字段或UDP报文头的字段,其中,TCP报文头的字段包括源端口字段、目的端口字段、TCP报文头检验和字段、TCP报文头序列号字段、TCP报文头确认序列号字段、以及TCP报文头窗口大小字段,UDP报文头的字段包括源端口字段、目的端口字段、报文长度字段、以及UDP检验和字段。当然,报文头的字段并不限于上面列举的字段,还可以包括其它字段。
在一些实施例中,进一步对步骤S201中所获取的网络报文的报文头中的源MAC地址和目的MAC地址进行哈希计算以获得另一哈希值(即,第三哈希值)。
在一些实施例中,将所获取的网络报文的报文头的信息、所计算的第一哈希值、以及所计算的第三哈希值保存在数据结构中,以用于后续的重复报文的查找比较处理。
在一些实施例中,计算第二哈希值时要使用的哈希函数被选择为使得针对具有不同特征的多个网络报文计算的多个第二哈希值呈现均匀分布。
另外,需要说明的是,关于哈希计算的一些基本知识对于本领域技术人员而言应当是知晓的,在此不再进行详细阐述。
然后,本公开的网络报文去重方法的流程进行到步骤S203。在步骤S203中,涉及无锁环形队列表。下面首先将对其进行简要介绍。
本公开的网络报文去重方法中使用的无锁环形队列表由用于存储网络报文的多个无锁环形队列组成。对于每个无锁环形队列,其中存储的每个网络报文的第二哈希值进行(同一)预定的转换之后得到的值相同。因此,上述转换实现了对网络报文的分类。即,第二哈希值经过预定的转换之后得到的值相同的网络报文(注:这些网络报文至少包括了第二哈希值本身相同的那些网络报文)都被存储在同一个无锁环形队列中。
此外,对于每个无锁环形队列,其中存储的网络报文的第二哈希值进行预定的转换之后得到的值与从无锁环形队列表中查找该无锁环形队列时使用的索引相同。因此,上述转换还在网络报文的第二哈希值与无锁环形队列表的索引之间建立了联系。更具体地讲,当需要从无锁环形队列表中查找用于存储某一网络报文的队列时,在已知该网络报文的第二哈希值的情况下,可以通过对该网络报文的第二哈希值进行预定的转换,转换后的值即可用作索引以从无锁环形队列表中找到对应的队列。
在一些实施例中,上述转换可以包括对网络报文的第二哈希值进行取模(mod)运算。例如,假设无锁环形队列表中包括M个无锁环形队列,则可以通过mod M的运算来对网络报文的第二哈希值进行转换。
图5示出了根据本公开的实施例的网络报文去重方法中使用的无锁环形队列表的示意图。如图5中所示,该无锁环形队列表中包括N个无锁环形队列,即,队列1、队列2、队列3、……、队列N。每一个队列用于存储网络报文(具体地,网络报文的数据结构)。当新接收到网络报文时,新接收的网络报文将被加入到其中的一个队列中。每一个队列中存储的网络报文(包括已经存储和将要存储的网络报文)的第二哈希值进行预定的转换之后得到的值相同。例如,在队列1中存储了n个网络报文pkt1、pkt2、pkt3、……、pktn,这n个网络报文的第二哈希值分别为hash1、hash2、hash3、……、hashn,通过对这n个第二哈希值hash1、hash2、hash3、……、hashn中的每一个进行预定的转换(例如,取模运算)所得到的n个转换后的值都相同。对于队列2、队列3、……、队列N也是如此。
此外,当要从无锁环形队列表中查找队列1时,可以对n个第二哈希值hash1、hash2、hash3、……、hashn中的任一个进行预定的转换(例如,取模运算),转换后的值可以作为索引从无锁环形队列表中找到队列1。对于队列2、队列3、……、队列N也是如此。
在系统初始化时,可以根据例如网络转发设备的网卡的报文转发率、预定的时间区间(例如,稍后将提到的时间窗口)的大小等因素来确定在预定的时间区间内最多能够出现的不同报文的数量,由此可以构建包括例如该数量的无锁环形队列的无锁环形队列表。并且,在构建无锁环形队列表时,可以定义以上描述的转换,该定义的转换用于在实际开始接收网络报文时,对接收的网络报文的第二哈希值进行转换。例如,可以将转换定义为对网络报文的第二哈希值进行mod运算,例如mod M运算,这里,M代表构建的无锁环形队列表中的无锁环形队列的数量。
以上简要地介绍了关于本公开的网络报文去重方法中使用的无锁环形队列表的一些内容。对于与队列表、队列等相关的一些其它内容,本领域技术人员应当是知晓的,在此不再进行详细阐述。
在介绍了无锁环形队列表之后,下面对步骤S203进行描述。具体地,在步骤S203中,当使用对步骤S202中所计算的新接收的网络报文的第二哈希值进行预定的转换之后得到的值作为索引从无锁环形队列表中进行查找时,根据上面关于无锁环形队列表的介绍,可以找到对应的队列,该队列中的网络报文的第二哈希值进行预定的转换之后得到的值与新接收的网络报文的第二哈希值进行预定的转换之后得到的值相同。
在一些实施例中,在从无锁环形队列表中找到队列之后,将新接收的网络报文(具体地,新接收的网络报文的数据结构)加入到队列中,并根据实际情况更新队列的首尾节点索引信息。
最后,本公开的网络报文去重方法的流程进行到步骤S204。在步骤S204中,涉及时间窗口的概念。下面首先将对其进行简要介绍。
在网络中,重复报文的产生实际上具有一定的时间局限性。即,一个重复报文不会在原始报文的产生之后很长时间才产生。因此,在进行报文去重时可以仅对某一设定的时间区间内的报文进行比较,这个设定的时间区间即为时间窗口。
本公开的网络报文去重方法利用了时间窗口这一概念。即,在对新接收的网络报文进行重复报文查找时,可以仅对队列中处于预定的时间窗口内的网络报文进行比较,而对队列中不处于预定的时间窗口内(即,处于预定的时间窗口外)的网络报文不进行比较。
具体地,在步骤S204中,将新接收的网络报文与步骤S203中找到的队列中处于预定的时间窗口内的原有的报文进行遍历比较,以从队列中查找与新接收的网络报文的比较结果符合预定的条件的网络报文(即,重复报文)。
在一些实施例中,根据经验值,预定的时间窗口的大小可以选择为1秒。当然,时间窗口的大小可以根据实际情况进行设置或调整。
在一些实施例中,可以根据新接收的网络报文的时间戳和队列中的原有的网络报文的时间戳之间的差值与预定的时间窗口的大小的比较来判断队列中的原有的网络报文是否处于预定的时间窗口内。
在一些实施例中,预定的条件可以包括队列中的原有的网络报文的信息与新接收的网络报文的信息相同、或者二者之间的差异在预定的范围内。
在一些实施例中,在针对新接收的网络报文从队列中找到符合预定的条件的网络报文(即,这意味着在新接收的网络报文之前已存在与之相同或重复的网络报文)之后,可以例如丢弃新接收的网络报文,不再进行诸如转发等的后续处理。
以上主要描述了本公开的网络报文去重方法的基本流程。为了便于更清楚地理解该方法中的查找比较过程(其主要涉及图1中的步骤S203、S204),下面将参考图3给出该过程的详细流程的描述。
首先,在步骤S301中,使用对计算的新接收的网络报文的第二哈希值进行预定的转换之后得到的值作为索引从无锁环形队列表中找到对应的队列,该对应的队列中网络报文的第二哈希值进行预定的转换之后得到的值与新接收的网络报文的第二哈希值进行预定的转换之后得到的值相同。
步骤S301中的过程在前面的步骤S203中已经描述,在此不再进行描述。
接着,在步骤S302中,判断所找到的队列是否已满。
如果队列已满,则在步骤S303中,将最先进入队列的网络报文从队列移除,并更新队列的尾结点索引信息。
如果队列未满,则在步骤S304中,将新接收的网络报文的数据结构加入到队列中,并更新队列的头结点索引信息。
如在前面的步骤S202中所描述的,在获取新接收的网络报文的报文头并计算新接收的网络报文的第一、第三哈希值之后,可以将它们保存在数据结构中。在步骤S304中,将新接收的网络报文的这个数据结构加入到队列中。
接着,在步骤S305中,在将新接收的网络报文的数据结构加入到队列中之后,判断队列中的网络报文的数量是否为1个。
如果队列中的网络报文的数量为1个(即,队列中除了新接收的网络报文之外没有其它的网络报文),则在步骤S306中,返回未找到重复报文的查找结果,并结束流程。
如果队列中的网络报文的数量大于1个(即,队列中除了新接收的网络报文之外还有其它的网络报文(即,原有的网络报文)),则在步骤S307中,开始新接收的网络报文与队列中的原有的网络报文的遍历比较。
接着,在步骤S308中,判断新接收的网络报文的时间戳与队列中的原有的网络报文的时间戳的差值是否大于预定的时间窗口的大小(这里,即判断队列中的原有的网络报文是否处于预定的时间窗口内)。
如果差值大于预定的时间窗口的大小(即,队列中的原有的网络报文处于预定的时间窗口外),则在步骤S309中,将队列中处于预定的时间窗口外的原有的网络报文从队列移除,并更新队列的尾结点索引信息。
这里,顺便说明的是,通过上述移除操作,当针对下一个新接收的网络报文查找重复报文时,下一个新接收的网络报文与队列中要进行遍历比较的网络报文的数量减少。通过这样做,减轻了处理负荷,提升了查找的性能。
接着,在步骤S310中,返回未找到重复队列的查找结果,并结束遍历比较。
如果差值不大于预定的时间窗口的大小(即,队列中的原有的网络报文处于预定的时间窗口内),则在步骤S311中,判断队列中的原有的网络报文是否先前被标记为已找到的网络报文。
如果队列中的原有的网络报文先前被标记为已找到的网络报文,则不再进一步进行队列中的原有的网络报文的数据结构中的信息与新接收的网络报文的数据结构中的信息的比较(即,稍后将描述的步骤S315),而是进行队列中的下一个原有的网络报文与新接收的网络报文的比较(即,稍后将描述的步骤S313)或者结束遍历比较(即,稍后将描述的步骤S314)。下面对此通过举例的方式简要说明。
举例来说,如果队列中的原有的网络报文(例如,网络报文A)被标记为已找到的网络报文,则这意味在针对先前接收的某一网络报文(例如,网络报文B)查找重复报文时,网络报文A已被确定为网络报文B的重复报文。因此,当针对目前新接收的网络报文(例如,网络报文C)查找重复报文时,此时队列中已存在两个相同的网络报文A和B,而且在新接收的网络报文C要与队列中的网络报文A比较之前已与队列中的网络报文B进行了比较(在先进入队列和后进入队列的网络报文之间,新接收的网络报文与后进入队列的网络报文先进行比较)。因此,新接收的网络报文C不需要与网络报文A再次比较,而是继续与队列中的下一个原有的网络报文(例如,网络报文D)比较或者结束遍历比较。
具体地,如果队列中的原有的网络报文先前被标记为已找到的网络报文,则在步骤S312中,判断队列中是否存在剩余的网络报文(即,尚未比较的网络报文)。
如果队列中存在剩余的网络报文,则在步骤S313中,获取队列中下一个原有的网络报文的数据结构,并且接着返回到步骤S308中以再次判断队列中下一个原有的网络报文是否处于预定的时间窗口内。
如果队列中不存在剩余的网络报文,则在步骤S314中,返回未找到重复报文的查找结果,并结束遍历比较。
如果队列中的原有的网络报文未被标记,则在步骤S315中,将队列中的原有的网络报文的数据结构中的信息与新接收的网络报文的数据结构中的信息进行比较。
接着,在步骤S316中,判断比较结果是否符合预定的条件。如上面已经提到的,预定的条件可以包括队列中的原有的网络报文的数据结构中的信息与新接收的网络报文的数据结构中的信息相同、或者二者的差异在预定的范围内。
如果比较结果不符合预定的条件,则在步骤S317中,判断队列中是否存在剩余的网络报文。
如果队列中存在剩余的网络报文,则进行到步骤S313中以获取队列中下一个原有的网络报文的数据结构,并且接着返回到步骤S308中以再次判断队列中下一个原有的网络报文是否处于预定的时间窗口内。
如果队列中不存在剩余的网络报文,则如同步骤S314中一样,在步骤S318中,返回未找到重复报文的查找结果,并结束遍历比较。
如果比较结果符合预定的条件,则在步骤S319中,将队列中符合预定的条件的原有的网络报文标记为已找到的网络报文,并然后在步骤S320中,返回已找到重复报文的查找结果,并结束遍历比较。这里需要说明的是,在步骤S319中对队列中找到的重复报文进行标记,而不是从队列中删除该重复报文,这种保持队列原有结构不变的做法,性能代价最小,而且也能避免后续针对下一个新接收的报文的重复比较(参见以上针对步骤S311的说明)。
以上已经详细地介绍了本公开的网络报文去重方法。在该方法中,对网络报文的特定信息进行哈希计算得到哈希值,然后以对该哈希值进行转换之后得到的值作为索引从无锁环形队列表中找到对应的无锁环形队列,最后再对无锁环形队列中预定时间窗口内的网络报文进行遍历比较以查找重复报文。
本发明通过综合运用哈希计算、哈希查找、无锁环形队列等技术,并且在这些技术的基础上构建以报文的哈希值经过转换之后得到的值作为哈希查找的索引的无锁环形队列表,同时结合时间窗口技术,对尤其是高速大流量场景下的在线去重提供了性能保障。在本发明中,只需要计算出报文的第二哈希值,经过简单的转换之后就能够以转换之后的值作为哈希查找的索引从无锁环形队列表中快速找到对应的无锁环形队列。而且,无锁环形队列所需的内存在系统初始化时就已经分配好,这样可以避免频繁分配与释放内存的系统开销,并且无锁环形队列在多线程处理高速流量报文时无需加锁,这些都为无锁环形队列内的报文遍历查找提供了高效的性能保障。另外,本发明对存储在无锁环形队列中的报文数据结构进行了优化,能够有效地减小存储大量报文时对系统内存的消耗。最后,本发明在查找确认重复报文时结合网络原理采用了报文的第一哈希值对比与报文头的特征信息中某些字段对比以及报文头的特征信息中某些字段的哈希值对比相结合的方法,相比于其它方法仅简单地对比报文的MD5值或者哈希值,能够实现重复报文的精确查找。
下面简要地介绍本公开的网络报文去重装置。图4示出了根据本公开的实施例的网络报文去重装置的结构。
如图4中所示,网络报文去重装置400包括第一部件401、第二部件402、第三部件403、以及第四部件404。
其中,第一部件401用于对新接收的网络报文进行解析,以获取报文头和有效载荷。
第二部件402用于计算新接收的网络报文的第一哈希值,并且基于所获取的报文头中的特征信息和所计算的第一哈希值计算新接收的网络报文的第二哈希值,其中,第一哈希值是所获取的有效载荷的哈希值。
第三部件403用于使用对新接收的网络报文的第二哈希值进行预定的转换之后得到的值作为索引从包括用于存储网络报文的多个无锁环形队列的无锁环形队列表中找到对应的无锁环形队列,其中,对应的无锁环形队列中存储的每个网络报文的第二哈希值进行预定的转换之后得到的值与新接收的网络报文的第二哈希值进行预定的转换之后得到的值相同。
第四部件404用于将新接收的网络报文与对应的无锁环形队列中处于预定的时间窗口内的原有的网络报文进行遍历比较,以从对应的无锁环形队列中查找与新接收的网络报文的比较结果符合预定的条件的网络报文。
在此需要说明的是,以上描述了第一部件401、第二部件402、第三部件403、第四部件404分别执行图2中所示的基本流程中的S201、S202、S203、以及S204中的处理。这仅仅是一个示例。本领域技术人员可以意识到,图2中所示的基本流程中的S201、S202、S203、以及S204中的处理可以通过数量更多或者更少的部件来执行,而不局限于图4中的所示的这四个部件。
而且,如以上所详细描述的,本公开的网络报文去重方法除了包括图2中所示的基本流程中的S201、S202、S203、以及S204中的处理之外,还可以包括诸多其它的处理。因此,网络报文去重装置400中的第一部件401、第二部件402、第三部件403、以及第四部件404还可以用于执行这些其它的处理,或者网络报文去重装置400还可以包括附加的部件来执行这些其它的处理。对于本领域技术人员来讲,这都是可以意识到的,因此在此不再进一步详细地描述。
本公开还可以通过计算机程序来实现。例如,该程序可以存储在计算机装置的存储器中,其在由计算机装置的处理器执行时实现本公开的网络报文去重方法。或者,该程序可以存储在计算机可读存储介质中,其在由处理器执行时实现本公开的网络报文去重方法。
计算机可读存储介质可以是例如但不限于电子的、磁性的、光学的、电磁的、红外的或半导体系统、装置或设备、或前述各项的任何适当组合。计算机可读存储介质的更具体的实例可以包括:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或前述各项的任何适当组合。
附图中的流程图和框图示出了根据本公开的各个实施例的装置、方法等的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、段或指令的一部分,该模块、段或指令的一部分包括用于实现规定的一个或多个逻辑功能的一个或多个可执行指令。在一些替代的实现中,方框中标注的处理也可以以不同于附图中标注的顺序发生。例如,取决于涉及的功能,两个连续的方框实际上可以基本并行地执行,或者这些方框有时也可以按相反的顺序执行。本领域技术人员可以根据需要调整操作的顺序。本领域技术人员还可以根据需要增加更多的操作或省略其中的一些操作。
本说明书中描述的任一特征,除非特别地叙述,均可以被其它等同或者具有类似目的的替代特征加以替换。即,除非特别地叙述,每个特征只是一系列等同或类似的特征中的一个示例。
此外,尽管对本公开的描述已包括对一个或多个实施例、配置或方面的描述,但是其它变型、修改和组合也在本公开的范围内。本公开旨在获得权利,这些权利应当包括在允许范围内的替代实施例、配置或方面,并且包括与请求保护的那些结构、功能、或步骤的可互换、替代和/或等同的结构、功能、或步骤,无论这些可互换、替代和/或等同的结构、功能、或步骤是否在本说明书中具体描述。
Claims (20)
1.一种用于网络报文去重的方法,包括:
对新接收的网络报文进行解析,以获取报文头和有效载荷;
计算所述新接收的网络报文的第一哈希值,并且基于所获取的所述报文头中的特征信息和所计算的所述第一哈希值计算所述新接收的网络报文的第二哈希值,其中,所述第一哈希值是所获取的所述有效载荷的哈希值;
使用对所述新接收的网络报文的第二哈希值进行预定的转换之后得到的值作为索引从包括用于存储网络报文的多个无锁环形队列的无锁环形队列表中找到对应的无锁环形队列,其中,所述对应的无锁环形队列中存储的每个网络报文的第二哈希值进行所述预定的转换之后得到的值与所述新接收的网络报文的第二哈希值进行所述预定的转换之后得到的值相同;
将所述新接收的网络报文与所述对应的无锁环形队列中处于预定的时间窗口内的原有的网络报文进行遍历比较,以从所述对应的无锁环形队列中查找与所述新接收的网络报文的比较结果符合预定的条件的网络报文。
2.根据权利要求1所述的方法,其中,所述特征信息是从所述新接收的网络报文的数据链路层报文头的字段、网络层报文头的字段、以及传输层报文头的字段中选择的信息。
3.根据权利要求2所述的方法,其中,所述数据链路层报文头的字段包括源MAC地址字段、以及目的MAC地址字段;
所述网络层报文头的字段包括IP标识字段、协议类型字段、TTL字段、IP报文头总长度字段、偏移字段、源IP地址字段、以及目的IP地址字段;
所述传输层报文头的字段包括TCP报文头的字段或UDP报文头的字段,并且
其中,所述TCP报文头的字段包括源端口字段、目的端口字段、TCP报文头检验和字段、TCP报文头序列号字段、TCP报文头确认序列号字段、以及TCP报文头窗口大小字段;
所述UDP报文头的字段包括源端口字段、目的端口字段、报文长度字段、以及UDP检验和字段。
4.根据权利要求1所述的方法,还包括:
计算所述新接收的网络报文的第三哈希值,其中,所述第三哈希值是所获取的所述报文头中的源MAC地址和目的MAC地址的哈希值;
将所获取的所述报文头的信息、所计算的所述第一哈希值、以及所计算的所述第三哈希值保存在数据结构中。
5.根据权利要求4所述的方法,还包括:
在从所述无锁环形队列表中找到所述对应的无锁环形队列之后,将所述新接收的网络报文的所述数据结构加入到所述对应的无锁环形队列中。
6.根据权利要求5所述的方法,还包括:
在将所述新接收的网络报文的所述数据结构加入到所述对应的无锁环形队列中之前,判断所述对应的无锁环形队列是否已满;
当所述对应的无锁环形队列已满时,将最先进入所述对应的无锁环形队列的网络报文从队列移除,并且更新所述对应的无锁环形队列的尾节点索引信息。
7.根据权利要求6所述的方法,还包括:
在将所述新接收的网络报文的所述数据结构加入到所述对应的无锁环形队列中之后,更新所述对应的无锁环形队列的头节点索引信息。
8.根据权利要求5所述的方法,其中,所述遍历比较包括:
判断所述新接收的网络报文的时间戳与所述对应的无锁环形队列中的原有的网络报文的时间戳之间的差值是否大于所述预定的时间窗口的大小;
当所述差值不大于所述预定的时间窗口的大小时,将所述新接收的网络报文的所述数据结构中的信息与所述对应的无锁环形队列中的原有的网络报文的数据结构中的对应信息进行比较。
9.根据权利要求8所述的方法,所述遍历比较还包括:
在将所述新接收的网络报文的所述数据结构中的信息与所述对应的无锁环形队列中的原有的网络报文的数据结构中的对应信息进行比较之前,判断所述对应的无锁环形队列中的原有的网络报文是否先前被标记为已找到的网络报文;
当所述对应的无锁环形队列中的原有的网络报文被标记时,不再将所述新接收的网络报文的所述数据结构中的信息与所述对应的无锁环形队列中的原有的网络报文的数据结构中的对应信息进行比较。
10.根据权利要求9所述的方法,所述遍历比较还包括:
当所述新接收的网络报文的所述数据结构中的信息与所述对应的无锁环形队列中的原有的网络报文的数据结构中的对应信息的比较结果满足所述预定的条件时,将所述对应的无锁环形队列中符合所述预定的条件的网络报文标记为已找到的网络报文。
11.根据权利要求10所述的方法,所述遍历比较还包括:
当从所述对应的无锁环形队列中处于所述预定的时间窗口内的原有的网络报文找到符合所述预定的条件的网络报文时,返回已找到重复报文的查找结果,并且结束所述遍历比较;
当从所述对应的无锁环形队列处于所述预定的时间窗口内的所有的原有的网络报文中没有找到符合所述预定的条件的网络报文时,返回未找到重复报文的查找结果,并且结束所述遍历比较。
12.根据权利要求11所述的方法,所述遍历比较还包括:
当从所述对应的无锁环形队列处于所述预定的时间窗口内的所有的原有的网络报文中没有找到符合所述预定的条件的网络报文时,在结束所述遍历比较之前,将所述对应的无锁环形队列中处于所述预定的时间窗口外的原有的网络报文从队列移除,并且更新所述对应的无锁环形队列的尾结点索引信息。
13.根据权利要求1-12中的任一项所述的方法,其中,所述预定的转换包括对网络报文的第二哈希值进行取模运算。
14.根据权利要求1-12中的任一项所述的方法,其中,所述预定的条件包括所述对应的无锁环形队列中的原有的网络报文的信息与所述新接收的网络报文的信息相同、或者所述对应的无锁环形队列中的原有的网络报文的信息与所述新接收的网络报文的信息之间的差异在预定的范围内。
15.根据权利要求1-12中的任一项所述的方法,其中,所述方法应用于网络转发设备中以在进行网络报文转发时对网络报文进行去重处理。
16.根据权利要求15所述的方法,其中,当针对所述新接收的网络报文从所述对应的无锁环形队列中找到符合所述预定的条件的网络报文时,所述网络转发设备丢弃所述新接收的网络报文而不再进行转发。
17.根据权利要求16所述的方法,其中,所述网络转发设备是交换机或者路由器。
18.一种用于网络报文去重的装置,所述装置包括用于实现权利要求1-17中的任一项所述的方法的部件。
19.一种计算机装置,所述计算机装置包括:
处理器;和
存储器,所述存储器存储能够由所述处理器执行的程序,所述程序在由所述处理器执行时实现权利要求1-17中的任一项所述的方法。
20.一种计算机可读存储介质,所述计算机可读存储介质存储程序,所述程序在由处理器执行时实现权利要求1-17中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010535017.2A CN113810337B (zh) | 2020-06-12 | 2020-06-12 | 用于网络报文去重的方法、装置、以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010535017.2A CN113810337B (zh) | 2020-06-12 | 2020-06-12 | 用于网络报文去重的方法、装置、以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113810337A true CN113810337A (zh) | 2021-12-17 |
CN113810337B CN113810337B (zh) | 2023-08-08 |
Family
ID=78944065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010535017.2A Active CN113810337B (zh) | 2020-06-12 | 2020-06-12 | 用于网络报文去重的方法、装置、以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113810337B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114244781A (zh) * | 2021-12-20 | 2022-03-25 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
CN114996261A (zh) * | 2022-08-05 | 2022-09-02 | 深圳市深蓝信息科技开发有限公司 | 基于ais数据的去重方法、装置、终端设备及存储介质 |
CN116366478A (zh) * | 2023-06-01 | 2023-06-30 | 湖北省楚天云有限公司 | 一种基于fpga的数据包对比去重方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100235333A1 (en) * | 2009-03-16 | 2010-09-16 | International Business Machines Corporation | Apparatus and method to sequentially deduplicate data |
CN101854391A (zh) * | 2010-05-25 | 2010-10-06 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析系统的实现方法 |
US20160275150A1 (en) * | 2015-03-20 | 2016-09-22 | International Business Machines Corporation | Lightweight table comparison |
CN107644081A (zh) * | 2017-09-21 | 2018-01-30 | 锐捷网络股份有限公司 | 数据去重方法及装置 |
CN108183893A (zh) * | 2017-12-25 | 2018-06-19 | 东软集团股份有限公司 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
CN108923967A (zh) * | 2018-06-27 | 2018-11-30 | 平安科技(深圳)有限公司 | 一种去重流量记录方法、装置、服务器及存储介质 |
CN109861995A (zh) * | 2019-01-17 | 2019-06-07 | 安徽谛听信息科技有限公司 | 一种网络空间安全大数据智能分析方法、计算机可读介质 |
CN110837423A (zh) * | 2018-08-17 | 2020-02-25 | 天津京东深拓机器人科技有限公司 | 一种自动导引运输车数据采集的方法和装置 |
CN111045782A (zh) * | 2019-11-20 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 日志处理方法、装置、电子设备和计算机可读存储介质 |
-
2020
- 2020-06-12 CN CN202010535017.2A patent/CN113810337B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100235333A1 (en) * | 2009-03-16 | 2010-09-16 | International Business Machines Corporation | Apparatus and method to sequentially deduplicate data |
CN101854391A (zh) * | 2010-05-25 | 2010-10-06 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析系统的实现方法 |
US20160275150A1 (en) * | 2015-03-20 | 2016-09-22 | International Business Machines Corporation | Lightweight table comparison |
CN107644081A (zh) * | 2017-09-21 | 2018-01-30 | 锐捷网络股份有限公司 | 数据去重方法及装置 |
CN108183893A (zh) * | 2017-12-25 | 2018-06-19 | 东软集团股份有限公司 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
CN108923967A (zh) * | 2018-06-27 | 2018-11-30 | 平安科技(深圳)有限公司 | 一种去重流量记录方法、装置、服务器及存储介质 |
CN110837423A (zh) * | 2018-08-17 | 2020-02-25 | 天津京东深拓机器人科技有限公司 | 一种自动导引运输车数据采集的方法和装置 |
CN109861995A (zh) * | 2019-01-17 | 2019-06-07 | 安徽谛听信息科技有限公司 | 一种网络空间安全大数据智能分析方法、计算机可读介质 |
CN111045782A (zh) * | 2019-11-20 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 日志处理方法、装置、电子设备和计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
魏建生: "《高性能重复数据检测与删除技术研究》", 《信息科技》, no. 2013 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114244781A (zh) * | 2021-12-20 | 2022-03-25 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
CN114244781B (zh) * | 2021-12-20 | 2023-12-22 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
CN114996261A (zh) * | 2022-08-05 | 2022-09-02 | 深圳市深蓝信息科技开发有限公司 | 基于ais数据的去重方法、装置、终端设备及存储介质 |
CN116366478A (zh) * | 2023-06-01 | 2023-06-30 | 湖北省楚天云有限公司 | 一种基于fpga的数据包对比去重方法 |
CN116366478B (zh) * | 2023-06-01 | 2023-08-15 | 湖北省楚天云有限公司 | 一种基于fpga的数据包对比去重方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113810337B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10764181B2 (en) | Pipelined evaluations for algorithmic forwarding route lookup | |
CN113810337B (zh) | 用于网络报文去重的方法、装置、以及存储介质 | |
CN110301120B (zh) | 流分类装置、方法和系统 | |
CN108141416B (zh) | 一种报文处理方法、计算设备以及报文处理装置 | |
US7411957B2 (en) | Hardware filtering support for denial-of-service attacks | |
US10148573B2 (en) | Packet processing method, node, and system | |
US10666564B2 (en) | Increasing entropy across routing table segments | |
US20050171937A1 (en) | Memory efficient hashing algorithm | |
US8923298B2 (en) | Optimized trie-based address lookup | |
US10791051B2 (en) | System and method to bypass the forwarding information base (FIB) for interest packet forwarding in an information-centric networking (ICN) environment | |
CN113055127B (zh) | 数据报文去重与传输方法、电子设备及存储介质 | |
US10397116B1 (en) | Access control based on range-matching | |
US10911579B1 (en) | Generating programmatically defined fields of metadata for network packets | |
CN110708250A (zh) | 一种提高数据转发性能的方法、电子设备及存储介质 | |
EP2916516A1 (en) | Packet processing method and apparatus | |
US9985885B1 (en) | Aggregating common portions of forwarding routes | |
US9906443B1 (en) | Forwarding table updates during live packet stream processing | |
CN111866202B (zh) | 报文发送方法、装置、电子设备和存储介质 | |
KR101880705B1 (ko) | 인터넷을 이용하여 장치정보를 수집하는 시스템 및 그 방법 | |
CN113595900B (zh) | 路由控制方法、装置、系统以及边界网关协议对等体 | |
CN111683036B (zh) | 数据存储方法、装置以及报文识别方法和装置 | |
CN114710444A (zh) | 基于塔型摘要和可驱逐流表的数据中心流量统计方法和系统 | |
CN109547389B (zh) | 一种码流文件重组的方法及装置 | |
CN107948091B (zh) | 一种网包分类的方法及装置 | |
WO2022049751A1 (ja) | コネクション数計測装置、方法、およびプログラム |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220128 Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Applicant after: Tianyiyun Technology Co.,Ltd. Address before: No.31, Financial Street, Xicheng District, Beijing, 100033 Applicant before: CHINA TELECOM Corp.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |