CN112702426A - 数据包转发方法、装置、电子设备及存储介质 - Google Patents
数据包转发方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112702426A CN112702426A CN202011543350.4A CN202011543350A CN112702426A CN 112702426 A CN112702426 A CN 112702426A CN 202011543350 A CN202011543350 A CN 202011543350A CN 112702426 A CN112702426 A CN 112702426A
- Authority
- CN
- China
- Prior art keywords
- data packet
- cache structure
- cache
- target socket
- socket cache
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000004064 recycling Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 239000012634 fragment Substances 0.000 claims description 8
- 238000011084 recovery Methods 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种数据包转发方法、装置、电子设备及存储介质。该数据包转发方法,包括以下步骤:获取待转发的数据包;判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发。本申请通过重复调用缓存区的目标套接字缓存结构从而可以提高数据包的转发效率。
Description
技术领域
本申请涉及计算机网络技术领域,具体而言,涉及一种数据包转发方法、装置、电子设备及存储介质。
背景技术
当前网络建设越来越完善,网络用户越来越多,网络流量也越来越多,这使得对网络通信设备的转发性能要求也越来越高。提高网络通信设备的转发性能可以提高网络用户的使用体验并有助于网络建设工作。
影响网络数据包转发的性能有很多方面。其中一个重要方面就是为网络数据包申请所需的内存。由于,目前每一次数据包都需要为其申请所需要的内存,所以内存申请过程的消耗降低了网络通信设备的转发效率。因此,如何降低或消除数据包处理过程中申请内存的时间消耗成为提高数据包转发性能的一个突破点。
发明内容
本申请实施例的目的在于提供一种数据包转发方法、装置、电子设备及存储介质,可以提高数据包转发效率。
第一方面,本申请实施例提供了一种数据包转发方法,包括:
获取待转发的数据包;
判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;
若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;
若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发。
本申请实施例通过采用重复调用缓存区的套接字缓存结构从而提高数据包的转发效率。
可选地,在本申请实施例所述的数据包转发方法中,所述采用所述目标套接字缓存结构对所述数据包进行转发的步骤之后,还包括:
判断所述目标套接字缓存结构是否符合回收标准;
若符合,则将所述目标套接字缓存结构放入所述缓存区;
若不符合,则将所述目标套接字缓存结构删除,并释放所述目标套接字缓存结构占用的内存。
本申请实施例通过对满足条件的套接字缓存结构进行回收,从而便于后续对数据包转发时对套接字缓存结构的调用,可以提高数据转发效率。
可选地,在本申请实施例所述的数据包转发方法中,所述缓存区设置有多个结构缓存组;每一所述结构缓存组存储有多个套接字缓存结构,同一所述结构缓存组内的套接字缓存结构对应的空间大小位于相同的区间范围。
可选地,在本申请实施例所述的数据包转发方法中,所述将所述目标套接字缓存结构放入所述缓存区,包括:
根据所述目标套接字缓存结构占用的内存大小定位到对应的结构缓存组,并将所述目标套接字缓存结构包存入所述结构缓存组。
可选地,在本申请实施例所述的数据包转发方法中,所述判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构,包括:
根据所述数据包的大小查找对应的结构缓存组,以判断对应的结构缓存组内是否存在与所述数据包的大小适配的目标套接字缓存结构。
可选地,在本申请实施例所述的数据包转发方法中,所述缓存区采用并发无锁队列来进行套接字缓存结构的缓存和取出。
可选地,在本申请实施例所述的数据包转发方法中,所述判断所述目标套接字缓存结构是否符合回收标准,包括:
判断所述套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区是否存满;
若以上判断的结果均为否,则所述目标套接字缓存结构符合回收标准。
可选地,在本申请实施例所述的数据包转发方法中,所述判断所述目标套接字缓存结构是否符合回收标准,包括:
判断所述目标套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区的存储量是否大于预设阈值;
若以上判断结果均为否,则根据所述目标套接字缓存结构所占的内存空间判断其匹配的数据包的数据量范围;
统计在预设时间段内位于所述数据量范围的数据包的出现次数;
若所述次数小于预设阈值,则不满足回收标准;
若所述次数大于预设阈值,则满足回收标准。
本申请通过对使用频率较小的套接字缓存结构进行不予回收,从而可以提高缓存区的使用效率,可以提高数据包转发的整体效率。
第二方面,本申请实施例还提供了一种数据包转发装置,包括:
第一获取模块,用于获取待转发的数据包;
第一判断模块,用于判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;
第一转发模块,用于若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;
第二转发模块,用于若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发。
第三方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
由上可知,本申请实施例提供的数据包转发方法及装置,通过获取待转发的数据包;判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发,从而实现数据包的快速转发,可以提高效率。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的数据包转发方法的第一种流程图。
图2为本申请实施例提供的数据包转发方法的第二种流程图。
图3为本申请实施例提供的数据包转发装置的第一种结构示意图。
图4为本申请实施例提供的数据包转发装置的第二种结构示意图。
图5为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1是本申请一些实施例中的一种数据包转发方法的流程图,该数据包转发方法可用于网络设备,当然用于其他电子设备也可。该数据包转发方法,包括以下步骤:
S101、获取待转发的数据包。
S102、判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构。
S103、若存在,则调用目标套接字缓存结构对所述数据包进行转发。
S104、若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用目标套接字缓存结构对所述数据包进行转发。
在该步骤S101中,该数据包由其他设备发送至该网络设备。其中,该数据包先缓存在预设的缓存区。其中,该预设的缓存区还存储有多个套接字缓存结构,该多个套接字缓存结构可以用于对对应规格的数据包进行处理及转发。其中,该套接字缓存结构是指Linux内核中用于对数据包进行存放以及处理的地点,使得协议栈中每个层都可以对数据进行操作,从而实现了数据包自底向上的传递。该套接字缓存结构维护一个收到的或者要发送的网络包。但其本身并不包含存放网络包的数据的存储区。存储区是另外单独分配的内存空间,该套接字缓存结构说明了如何访问存储区空间,如何维护多个存储区空间以及存储数据包解析的成果。
在该步骤S102中,匹配是指该目标套接字缓存结构是指其所占用的内存空间大小满足该目标数据包的空间大小。当然,如果满足该目标数据包的空间大小的套接字缓存结构有多个,则选择最接近该目标数据包所需求的内存空间大小的套接字缓存结构作为目标套接字缓存结构。
在该步骤S103中,若存在与所述数据包匹配的目标套接字缓存结构,直接使用该目标套接字缓存结构占用的内存来对该目标数据包进行转发操作。其中,在该缓存区,多个目标套接字缓存结构采用的是并发无锁队列实现的,例如,可以采用环形队列实现。当然,采用其他非并发无锁队列也可以,但是效率没有采用并发无锁队列的效率高。其中,环形队列存在生产者头位置、生产者尾部位置、消费者头位置、消费者尾部位置、队列长度等成员。队列的无锁操作需要CPU的CAS(Compare And Set)的原子操作。目前,几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是CMPXCHG汇编指令,ARMv8下对应的是LDXR/STXR指令,ARMv7下对应的是LDREX/STREX指令,并发无锁队列支持多生产者和多消费者,由此可实现高并发下的安全的快速访问,避免用锁来保护带来的性能消耗。
在该步骤S104中,如果不存在与所述数据包匹配的目标套接字缓存结构,则需要向处理器发起申请,以申请对应空间大小的内存来形成所需的目标套接字缓存结构,然后使用该目标内存套接字缓存结构来对该目标数据包进行转发。
在一些实施例中,该缓存区设置有多个结构缓存组;每一结构缓存组存储有多个套接字缓存结构,同一结构缓存组内的套接字缓存结构对应的空间大小位于相同的区间范围。例如,缓存区设置有缓存结构组A1、A2、A3以及A4。其中,缓存结构组A1内存储有多个位于该区间范围a1的套接字缓存结构。缓存结构组A2内存储有多个位于该区间范围a2的套接字缓存结构。缓存结构组A3内存储有多个位于该区间范围a3的套接字缓存结构。缓存结构组A4内存储有多个位于该区间范围a4的套接字缓存结构。
对应地,该步骤S102具体包括以下步骤:根据所述数据包的大小查找对应的结构缓存组,以判断对应的结构缓存组内是否存在与所述数据包的大小适配的目标套接字缓存结构。其中,大小适配是指该目标套接字缓存结构所对应的内存空间大小大于该数据包所需的空间大小。
由上可知,本申请实施例提供的数据包转发方法,通过获取待转发的数据包;判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发,从而实现数据包的快速转发,可以提高效率。
请参照图2,图2是本申请一些实施例中的一种数据包转发方法的流程图,该数据包转发方法可用于网络设备中,该方法包括以下步骤:
S201、获取待转发的数据包。
S202、判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构。
S203、若存在,则调用目标套接字缓存结构对所述数据包进行转发。
S204、若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用目标套接字缓存结构对所述数据包进行转发。
S205、判断所述目标套接字缓存结构是否符合回收标准。
S206、若符合,则将所述目标套接字缓存结构放入所述缓存区。
S207、若不符合,则将所述目标套接字缓存结构删除,并释放所述目标套接字缓存结构占用的内存。
其中,该步骤S201-步骤S204与上述实施例中的步骤S101-步骤S104对应,因此不再重复描述。
在该步骤S205中,为了避免在该缓存区存入重复的目标套接字缓存结构以及不符合条件的目标套接字缓存结构,在使用该目标套接字缓存结构之后,需要进行判断。
其中,在一些实施例中,该步骤S205可以包括以下子步骤:
S2051、判断所述目标套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区的存储量是否大于预设阈值。
S2052、若以上判断均为否,则所述目标套接字缓存结构符合回收标准。
在该步骤S2051中,该预设阈值可以设定为该存储区空间总大小的95%或者80%,当然其并不限于此。也可以设定为该存储区的空间大小的100%。克隆套接字缓存结构是指该目标套接字缓存结构所占用的内存空间已经被另一套接字缓存结构占用。分片数据包是指该目标套接字缓存结构为一个统一的整体,其内部并没有设置其他分片结构。
其中,在该步骤S2052中,如果步骤S2051中四个判别均为否,则说明书该目标套接字缓存结构可以回收子该缓存区。
可以理解地,在一些实施例中,该步骤S205可以包括以下子步骤:
S2053、判断所述目标套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区的存储量是否大于预设阈值。S2054、若以上判断均为否,则对所述目标套接字缓存结构所占的内存空间判断其匹配的数据包的数据量范围。S2055、统计在预设时间段内位于该数据量范围的数据包的出现次数。S2056、若所述次数小于预设阈值,则将所述目标套接字缓存结构删除,并释放所述目标套接字缓存结构占用的内存。S2057、若所述次数大于预设阈值,则将所述目标套接字缓存结构放入所述缓存区。
其中,在该步骤S2054中,每一目标套接字缓存结构对应的数据包的数据量范围与其所在的内存空间的大小相关。通常,一个目标套接字缓存结构可以适配一定数据量范围的数据包。其中,在该步骤S2055中,通过查询历史记录,从而统计出在一定时间范围内位于该数据量范围的数据包的出现次数。其中,在该步骤S2056以及步骤S2057中,如果该次数小于预设阈值,则说明该目标套接字缓存结构不常用,因此需要将其删除并释放对应的内存空间。如果该次数大于预设阈值,说明该目标套接字缓存结构常用,因此,需要将其回收。因此,通过该次数判断可以避免浪费该缓存区的内存空间,从而可以提高缓存区的内存空间的使用效率,进而可以提高数据包的转发效率。
可以理解地,在一些实施例中,该步骤S206可以具体包括:根据所述目标套接字缓存结构占用的内存大小定位到对应的结构缓存组,并将所述目标套接字缓存结构存入所述结构缓存组。也即是将大小位于同一区间的目标套接字缓存结构存储在同一结构缓存组,从而可以提高后续调用对应大小的目标套接字缓存结构的效率。其中,该缓存区采用并发无锁队列来进行套接字缓存结构的缓存和取出。例如,可以采用环形队列实现。当然,采用其他非并发无锁队列也可以,但是效率没有采用并发无锁队列的效率高。其中,环形队列存在生产者头位置、生产者尾部位置、消费者头位置、消费者尾部位置、队列长度等成员。
请参照图3,图3是本申请一些实施例中的一种数据包转发装置的结构图。该数据包转发装置,包括:第一获取模块301、第一判断模块302、第一转发模块303以及第二转发模块304。
其中,该第一获取模块301用于获取待转发的数据包。该数据包由其他设备发送至该网络设备。其中,该数据包先缓存在预设的缓存区。其中,该预设的缓存区还存储有多个套接字缓存结构,该多个套接字缓存结构可以用于对对应规格的数据包进行处理及转发。其中,该套接字缓存结构是指Linux内核中用于对数据包进行存放以及处理的地点,使得协议栈中每个层都可以对数据进行操作,从而实现了数据包自底向上的传递。该套接字缓存结构维护一个收到的或者要发送的网络包。但其本身并不包含存放网络包的数据的存储区。存储区是另外单独分配的内存空间,该套接字缓存结构说明了如何访问存储区空间,如何维护多个存储区空间以及存储数据包解析的成果。
其中,该第一判断模块302用于判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构。匹配是指该目标套接字缓存结构是指其所占用的内存空间大小满足该目标数据包的空间大小。当然,如果满足该目标数据包的空间大小的套接字缓存结构有多个,则选择最接近该目标数据包所需求的内存空间大小的套接字缓存结构作为目标套接字缓存结构。
其中,该第一转发模块303用于若存在,则调用所述目标套接字缓存结构对所述数据包进行转发。若存在与所述数据包匹配的目标套接字缓存结构,直接使用该目标套接字缓存结构占用的内存来对该目标数据包进行转发操作。其中,在该缓存区,多个目标套接字缓存结构采用的是并发无锁队列实现的,例如,可以采用环形队列实现。当然,采用其他非并发无锁队列也可以,但是效率没有采用并发无锁队列的效率高。其中,环形队列存在生产者头位置、生产者尾部位置、消费者头位置、消费者尾部位置、队列长度等成员。队列的无锁操作需要CPU的CAS(Compare And Set)的原子操作。目前,几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是CMPXCHG汇编指令,ARMv8下对应的是LDXR/STXR指令,ARMv7下对应的是LDREX/STREX指令,并发无锁队列支持多生产者和多消费者,由此可实现高并发下的安全的快速访问,避免用锁来保护带来的性能消耗。
其中,该第二转发模块304用于若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发。如果不存在与所述数据包匹配的目标套接字缓存结构,则需要向处理器发起申请,以申请对应空间大小的内存来形成所需的目标套接字缓存结构,然后使用该目标内存套接字缓存结构来对该目标数据包进行转发。
在一些实施例中,该缓存区设置有多个结构缓存组;每一结构缓存组存储有多个套接字缓存结构,同一结构缓存组内的套接字缓存结构对应的空间大小位于相同的区间范围。例如,缓存区设置有缓存结构组A1、A2、A3以及A4。其中,缓存结构组A1内存储有多个位于该区间范围a1的套接字缓存结构。缓存结构组A2内存储有多个位于该区间范围a2的套接字缓存结构。缓存结构组A3内存储有多个位于该区间范围a3的套接字缓存结构。缓存结构组A4内存储有多个位于该区间范围a4的套接字缓存结构。
对应地,该第一判断模块302用于:根据所述数据包的大小查找对应的结构缓存组,以判断对应的结构缓存组内是否存在与所述数据包的大小适配的目标套接字缓存结构。其中,大小适配是指该目标套接字缓存结构所对应的内存空间大小大于该数据包所需的空间大小。
由上可知,本申请实施例提供的数据包转发装置,通过获取待转发的数据包;判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发,从而实现数据包的快速转发,可以提高效率。
请参照图4,图4是本申请一些实施例中的一种数据包转发装置的结构图,该数据包转发装置可用于网络设备中,该数据包转发装置包括:第一获取模块401、第一判断模块402、第一转发模块403、第二转发模块404、第二判断模块405、回收模块406、删除模块407。
其中,该第一获取模块401用于获取待转发的数据包。
其中,该第一判断模块402用于判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构。
其中,该第一转发模块403用于若存在,则调用目标套接字缓存结构对所述数据包进行转发。
其中,该第二转发模块404用于若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用目标套接字缓存结构对所述数据包进行转发。
其中,该第二判断模块405用于判断所述目标套接字缓存结构是否符合回收标准。
其中,该回收模块406用于若符合,则将所述目标套接字缓存结构放入所述缓存区。
其中,该删除模块407用于若不符合,则将所述目标套接字缓存结构删除,并释放所述目标套接字缓存结构占用的内存。
其中,在一些实施例中,该第二判断模块405用于:判断所述目标套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区的存储量是否大于预设阈值。若以上判断均为否,则所述目标套接字缓存结构符合回收标准。
该预设阈值可以设定为该存储区空间总大小的95%或者80%,当然其并不限于此。也可以设定为该存储区的空间大小的100%。克隆套接字缓存结构是指该目标套接字缓存结构所占用的内存空间已经被另一套接字缓存结构占用。分片数据包是指该目标套接字缓存结构为一个统一的整体,其内部并没有设置其他分片结构。
可以理解地,在一些实施例中,该第二判断模块405用于:判断所述目标套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区的存储量是否大于预设阈值。若以上判断均为否,则对所述目标套接字缓存结构所占的内存空间判断其匹配的数据包的数据量范围。统计在预设时间段内位于该数据量范围的数据包的出现次数。若所述次数小于预设阈值,则将所述目标套接字缓存结构删除,并释放所述目标套接字缓存结构占用的内存。若所述次数大于预设阈值,则将所述目标套接字缓存结构放入所述缓存区。
其中,每一目标套接字缓存结构对应的数据包的数据量范围与其所在的内存空间的大小相关。通常,一个目标套接字缓存结构可以适配一定数据量范围的数据包。通过查询历史记录,从而统计出在一定时间范围内位于该数据量范围的数据包的出现次数。如果该次数小于预设阈值,则说明该目标套接字缓存结构不常用,因此需要将其删除并释放对应的内存空间。如果该次数大于预设阈值,说明该目标套接字缓存结构常用,因此,需要将其回收。因此,通过次数判断可以避免浪费该缓存区的内存空间,从而可以提高缓存区的内存空间的使用效率,进而可以提高数据包的转发效率。
可以理解地,在一些实施例中,该回收模块406用于:根据所述目标套接字缓存结构占用的内存大小定位到对应的结构缓存组,并将所述目标套接字缓存结构存入所述结构缓存组。也即是将大小位于同一区间的目标套接字缓存结构存储在同一结构缓存组,从而可以提高后续调用对应大小的目标套接字缓存结构的效率。其中,该缓存区采用并发无锁队列来进行套接字缓存结构的缓存和取出。例如,可以采用环形队列实现。当然,采用其他非并发无锁队列也可以,但是效率没有采用并发无锁队列的效率高。其中,环形队列存在生产者头位置、生产者尾部位置、消费者头位置、消费者尾部位置、队列长度等成员。
请参照图5,图5为本申请实施例提供的一种电子设备的结构示意图,本申请提供一种电子设备5,包括:处理器501和存储器502,处理器501和存储器502通过通信总线503和/或其他形式的连接机构(未标出)互连并相互通讯,存储器502存储有处理器501可执行的计算机程序,当计算设备运行时,处理器501执行该计算机程序,以执行时执行上述实施例的任一可选的实现方式中的方法。
本申请实施例提供一种存储介质,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random AccessMemory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead OnlyMemory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种数据包转发方法,其特征在于,包括:
获取待转发的数据包;
判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;
若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;
若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发。
2.根据权利要求1所述的数据包转发方法,其特征在于,所述采用所述目标套接字缓存结构对所述数据包进行转发的步骤之后,还包括:
判断所述目标套接字缓存结构是否符合回收标准;
若符合,则将所述目标套接字缓存结构放入所述缓存区;
若不符合,则将所述目标套接字缓存结构删除,并释放所述目标套接字缓存结构占用的内存。
3.根据权利要求2所述的数据包转发方法,其特征在于,所述缓存区设置有多个结构缓存组;每一所述结构缓存组存储有多个套接字缓存结构,同一所述结构缓存组内的套接字缓存结构对应的空间大小位于相同的区间范围内。
4.根据权利要求3所述的数据包转发方法,其特征在于,所述将所述目标套接字缓存结构放入所述缓存区,包括:
根据所述目标套接字缓存结构占用的内存大小定位到对应的结构缓存组,并将所述目标套接字缓存结构存入所述结构缓存组。
5.根据权利要求3所述的数据包转发方法,其特征在于,所述判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构,包括:
根据所述数据包的大小查找对应的结构缓存组,以判断对应的结构缓存组内是否存在与所述数据包的大小适配的目标套接字缓存结构。
6.根据权利要求2所述的数据包转发方法,其特征在于,所述缓存区采用并发无锁队列来进行套接字缓存结构的缓存和取出。
7.根据权利要求2所述的数据包转发方法,其特征在于,所述判断所述目标套接字缓存结构是否符合回收标准,包括:
判断所述套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区是否存满;
若以上判断的结果均为否,则所述目标套接字缓存结构符合回收标准。
8.根据权利要求2所述的数据包转发方法,其特征在于,所述判断所述目标套接字缓存结构是否符合回收标准,包括:
判断所述目标套接字缓存结构是否为克隆套接字缓存结构、判断所述套接字缓存结构是否包括分片数据包、判断所述套接字缓存结构是否包括分散数据块以及所述缓存区的存储量是否大于预设阈值;
若以上判断的结果均为否,则根据所述目标套接字缓存结构所占的内存空间判断其匹配的数据包的数据量范围;
统计在预设时间段内位于所述数据量范围的数据包的出现次数;
若所述次数小于预设阈值,则不满足回收标准;
若所述次数大于预设阈值,则满足回收标准。
9.一种数据包转发装置,其特征在于,包括:
第一获取模块,用于获取待转发的数据包;
第一判断模块,用于判断缓存区是否存在与所述数据包匹配的目标套接字缓存结构;
第一转发模块,用于若存在,则调用所述目标套接字缓存结构对所述数据包进行转发;
第二转发模块,用于若不存在,则调用与所述数据包的大小匹配的内存来形成所述目标套接字缓存结构,并采用所述目标套接字缓存结构对所述数据包进行转发。
10.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-8任一项所述的方法。
11.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011543350.4A CN112702426A (zh) | 2020-12-23 | 2020-12-23 | 数据包转发方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011543350.4A CN112702426A (zh) | 2020-12-23 | 2020-12-23 | 数据包转发方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112702426A true CN112702426A (zh) | 2021-04-23 |
Family
ID=75509548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011543350.4A Pending CN112702426A (zh) | 2020-12-23 | 2020-12-23 | 数据包转发方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112702426A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490459A (zh) * | 2022-01-27 | 2022-05-13 | 重庆物奇微电子有限公司 | 数据传输方法、装置、设备、接收机和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100064286A1 (en) * | 2008-09-10 | 2010-03-11 | International Business Machines Corporation | Data affinity based scheme for mapping connections to cpus in i/o adapter |
CN102508783A (zh) * | 2011-10-18 | 2012-06-20 | 深圳市共进电子股份有限公司 | 一种避免数据混乱的内存回收方法 |
CN103778071A (zh) * | 2014-01-20 | 2014-05-07 | 华为技术有限公司 | 缓存的空间分配方法及装置 |
CN106572036A (zh) * | 2016-11-09 | 2017-04-19 | 杭州迪普科技股份有限公司 | 一种套接字缓存skb管理方法及装置 |
CN108121598A (zh) * | 2016-11-29 | 2018-06-05 | 中兴通讯股份有限公司 | 套接字缓存资源管理方法及装置 |
CN111177032A (zh) * | 2019-12-29 | 2020-05-19 | 浪潮电子信息产业股份有限公司 | 缓存空间申请方法、系统、装置及计算机可读存储介质 |
-
2020
- 2020-12-23 CN CN202011543350.4A patent/CN112702426A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100064286A1 (en) * | 2008-09-10 | 2010-03-11 | International Business Machines Corporation | Data affinity based scheme for mapping connections to cpus in i/o adapter |
CN102508783A (zh) * | 2011-10-18 | 2012-06-20 | 深圳市共进电子股份有限公司 | 一种避免数据混乱的内存回收方法 |
CN103778071A (zh) * | 2014-01-20 | 2014-05-07 | 华为技术有限公司 | 缓存的空间分配方法及装置 |
CN106572036A (zh) * | 2016-11-09 | 2017-04-19 | 杭州迪普科技股份有限公司 | 一种套接字缓存skb管理方法及装置 |
CN108121598A (zh) * | 2016-11-29 | 2018-06-05 | 中兴通讯股份有限公司 | 套接字缓存资源管理方法及装置 |
CN111177032A (zh) * | 2019-12-29 | 2020-05-19 | 浪潮电子信息产业股份有限公司 | 缓存空间申请方法、系统、装置及计算机可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490459A (zh) * | 2022-01-27 | 2022-05-13 | 重庆物奇微电子有限公司 | 数据传输方法、装置、设备、接收机和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2898430B1 (en) | Mail indexing and searching using hierarchical caches | |
CN107609159B (zh) | 用于数据加载的方法、装置及计算机可读介质 | |
US20190220391A1 (en) | Memory management method and device | |
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
CN108197289B (zh) | 一种数据存储结构、数据存储查询方法、终端及介质 | |
CN105302840B (zh) | 一种缓存管理方法与设备 | |
WO2021068567A1 (zh) | 区块链的区块分发方法、装置、计算机设备和存储介质 | |
CN111198856B (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN108108089B (zh) | 一种图片加载方法及装置 | |
CN109977129A (zh) | 多级数据缓存方法及设备 | |
CN107665095B (zh) | 存储器空间管理的设备、方法及可读存储介质 | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
CN111722918A (zh) | 业务标识码生成方法、装置、存储介质及电子设备 | |
CN109376125A (zh) | 一种元数据存储方法、装置、设备及计算机可读存储介质 | |
WO2020215580A1 (zh) | 一种分布式全局数据去重方法和装置 | |
CN112702426A (zh) | 数据包转发方法、装置、电子设备及存储介质 | |
WO2020211363A1 (zh) | 提高程序加载效率的方法、装置、计算机设备和存储介质 | |
US20220342888A1 (en) | Object tagging | |
CN106484691B (zh) | 移动终端的数据存储方法和装置 | |
CN114490527A (zh) | 元数据检索方法、系统、终端及存储介质 | |
JP6406254B2 (ja) | ストレージ装置、データアクセス方法およびデータアクセスプログラム | |
CN110309184B (zh) | 一种航空运价数据的缓存方法及系统 | |
US9129033B1 (en) | Caching efficiency using a metadata cache | |
CN116303267A (zh) | 数据访问方法、装置、设备以及存储介质 | |
CN106970964B (zh) | 基于共享内存的gps数据信息查询方法及系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210423 |
|
RJ01 | Rejection of invention patent application after publication |