CN112491979B - 一种网卡数据包缓存管理方法、装置、终端及存储介质 - Google Patents
一种网卡数据包缓存管理方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN112491979B CN112491979B CN202011264058.9A CN202011264058A CN112491979B CN 112491979 B CN112491979 B CN 112491979B CN 202011264058 A CN202011264058 A CN 202011264058A CN 112491979 B CN112491979 B CN 112491979B
- Authority
- CN
- China
- Prior art keywords
- queue
- busy
- data packets
- cache
- buffer
- 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
Links
- 238000007726 management method Methods 0.000 title claims abstract description 22
- 239000000872 buffer Substances 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/80—Actions related to the user profile or the type of traffic
- H04L47/803—Application aware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种网卡数据包缓存管理方法、装置、终端及存储介质,所述方法:设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址依次映射到空闲队列;通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;上层应用通过忙碌队列的读指针依次获取并处理缓存的数据包,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址。
Description
技术领域
本发明属于网卡数据处理技术领域,具体涉及一种网卡数据包缓存管理方法、装置、终端及存储介质。
背景技术
为提高收包效率,网卡驱动对收到的数据包会进行缓存处理,上层网络应用会从缓存结构中消费数据包,通过缓存的形式处理数据包,能够较大程度上提高上网卡收发包的效率。但由于网卡驱动和上层应用需要同时对缓存结构中的数据包进行处理,对缓存结构中的元素进行添加或删除处理时,往往需要对缓存结构元素进行加锁/解锁处理,在一定程度上会影响网卡收发包的效率,同时异常情况下还有可能死锁,导致驱动崩溃。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种网卡数据包缓存管理方法、装置、终端及存储介质,是非常有必要的。
发明内容
针对现有技术的上述网卡驱动和上层应用同时进行数据处理时,需要对缓存结构元素进行加解锁处理,影响网卡收发包效率的缺陷,本发明提供一种网卡数据包缓存管理方法、装置、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种网卡数据包缓存管理方法,包括如下步骤:
S1.设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;
S2.网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址依次映射到空闲队列;
S3.通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
S4.上层应用通过忙碌队列的读指针依次获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址。
进一步地,还包括如下步骤:
S5.获取忙碌队列及空闲队列实时的读指针和写指针,并根据两个队列各自实时的读写指针的关系,判断缓存数据包在存储池的状态,以及是否需要增设缓存池。
进一步地,步骤S1具体步骤如下:
S11.计算环形缓存队列长度=总缓存空间大小/(上层应用线程数*分类后单个数据包大小);
S12.以设定的环形缓存队列长度创建两个环形缓存队列;
S13.设定两个环形缓存队列中一个为忙碌队列,另一个为空闲队列;
S14.将忙碌队列和空闲队列设定为一个缓存池。
进一步地,步骤S2具体步骤如下:
S21.网卡驱动从数据链路接收数据包到接收链路环中;
S22.网卡驱动对数据包进行hash分类;
S23.网卡驱动通过忙碌队列的写指针将分类后数据包依次缓存到忙碌队列中;
S24.网卡驱动将忙碌队列缓存数据包的地址依次映射到空闲队列。
进一步地,步骤S4具体步骤如下:
S41.上层应用通过忙碌队列的读指针依次获取缓存的数据包;
S42.上层应用依次对缓存数据包进行处理;
S43.上层应用通过空闲队列的写指针从空闲队列依次获取并释放处理完的缓存数据包在忙碌队列的地址。
进一步地,步骤S5具体步骤如下:
S51.获取忙碌队列及空闲队列实时的读指针和写指针;
S52.判断忙碌队列的读指针和写指针是否相等;
若是,判定忙碌队列为空,无缓存数据包,返回步骤S2;
若否,进入步骤S53,或者进入步骤S54;
S53.判断是否忙碌队列的下一个写指针为读指针,即忙碌队列写指针+1=忙碌队列读指针;
若是,判定忙碌队列已满,进入步骤S55;
若否,返回步骤S2;
S54.判断空闲队列的下一个读指针大于写指针,即空闲队列读指针+1>空闲队列写指针;
若是,判定空闲队列的空闲内存地址已消耗完毕,进入步骤S55;
若否,返回步骤S2;
S55.重复步骤S1步骤增设缓存池。
第二方面,本发明提供一种网卡数据包缓存管理装置,包括:
缓存池设置模块,用于设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;
数据缓存模块,用于设置网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址依次映射到空闲队列;
缓存地址获取模块,通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
数据处理模块,用于通过上层应用通过忙碌队列的读指针依次获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址。
进一步地,还包括:
缓存数量确定模块,用于获取忙碌队列及空闲队列实时的读指针和写指针,并根据两个队列各自实时的读写指针的关系,判断缓存数据包在存储池的状态,以及是否需要增设缓存池。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的第一方面的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
本发明的有益效果在于,
本发明提供的网卡数据包缓存管理方法、装置、终端及存储介质,通过两个环形队列来管理数据包缓存的收发和释放,网卡驱动和上层应用分别操作环形队列上的读写指针,利用环形的特性实现数据包收发和释放,从而在数据包处理过程中无须对环形队列中的缓存结构元素进行加锁和解锁处理,提高网卡收发包效率,提升网卡驱动运行的稳定性。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的方法流程示意图一;
图2是本发明的方法流程示意图二;
图3是本发明的系统示意图;
图中,1-缓存池设置模块;1.1-队列长度计算单元;1.2-环形缓存队列创建单元;1.3-环形缓存队列分工设置单元;1.4-缓存池设定单元;2-数据缓存模块;2.1-数据包接收单元;2.2-数据包分类单元;2.3-数据包缓存单元;2.4-地址存储单元;3-缓存地址获取模块;4-数据处理模块;4.1-数据包获取单元;4.2-数据包处理单元;4.3-地址释放单元;5-缓存数量确定模块;5.1-指针获取单元;5.2-指针相等判断单元;5.3-队列为空判定单元;5.4-忙碌队列写指针判断单元;5.5-忙碌队列已满判定单元;5.6-空闲队列读指针判断单元;5.7-空闲地址用尽判定单元;5.8-缓存池增设单元。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
实施例1:
如图1所示,本发明提供一种网卡数据包缓存管理方法,包括如下步骤:
S1.设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;
S2.网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针将分类后数据包缓存到忙碌队列中,再依次将忙碌队列中缓存数据包的地址依次映射到空闲队列;
S3.通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
S4.上层应用通过忙碌队列的读指针依获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址。
实施例2:
如图2所示,本发明提供一种网卡数据包缓存管理方法,包括如下步骤:
S1.设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;具体步骤如下:
S11.计算环形缓存队列长度=总缓存空间大小/(上层应用线程数*分类后单个数据包大小);
S12.以设定的环形缓存队列长度创建两个环形缓存队列;
S13.设定两个环形缓存队列中一个为忙碌队列,另一个为空闲队列;
S14.将忙碌队列和空闲队列设定为一个缓存池;
S2.网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址指向空闲队列;具体步骤如下:
S21.网卡驱动从数据链路接收数据包到接收链路环中;
S22.网卡驱动对数据包进行hash分类;
S23.网卡驱动通过忙碌队列的写指针将分类后数据包依次缓存到忙碌队列中;
S24.网卡驱动将忙碌队列缓存数据包的地址依次映射到空闲队列;
S3.通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
S4.上层应用通过忙碌队列的读指针依次获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址;具体步骤如下:
S41.上层应用通过忙碌队列的读指针依次获取缓存的数据包;
S42.上层应用依次对缓存数据包进行处理;
S43.上层应用通过空闲队列的写指针从空闲队列依次获取并释放处理完的缓存数据包在忙碌队列的地址;
S5.获取忙碌队列及空闲队列实时的读指针和写指针,并根据两个队列各自实时的读写指针的关系,判断缓存数据包在存储池的状态,以及是否需要增设缓存池;具体步骤如下:
S51.获取忙碌队列及空闲队列实时的读指针和写指针;
S52.判断忙碌队列的读指针和写指针是否相等;
若是,判定忙碌队列为空,无缓存数据包,返回步骤S2;
若否,进入步骤S53,或者进入步骤S54;
S53.判断是否忙碌队列的下一个写指针为读指针,即忙碌队列写指针+1=忙碌队列读指针;
若是,判定忙碌队列已满,进入步骤S55;
若否,返回步骤S2;
S54.判断空闲队列的下一个读指针大于写指针,即空闲队列读指针+1>空闲队列写指针;
若是,判定空闲队列的空闲内存地址已消耗完毕,进入步骤S55;
若否,返回步骤S2;
S55.重复步骤S1步骤增设缓存池。
在某些实施例中,也可根据上层应用的收发包线程数提前将缓存池设置为多组。
在某些实施例中,网卡驱动只操作忙碌队列的写指针和读指针;
忙碌队列的读指针永远不能超过写指针,初始状态,忙碌队列的读指针与写指针在相同位置;
当忙碌队列读指针与写指针相等时,代表忙碌队列为空,缓存数据包被处理完毕,此时无缓存数据包;
而当写指针下一个位置为读指针,即bwp+1==brp,代表忙碌队列满,此时会出现丢包。
在某些实施例中,上层应用只操作空闲队列的写指针和读指针;
空闲队列的读指针永远不能超过写指针,初始状态,读指针和写指针位于第一个空闲的内存地址上;
当空闲队列读指针下一个位置超过写指针时,代表空闲队列的内存地址已经消耗完毕,此时无法缓存数据包,将出现丢包。
实施例3:
如图3所示,本发明提供一种网卡数据包缓存管理装置,包括:
缓存池设置模块1,用于设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;缓存池设置模块1包括:
队列长度计算单元1.1,用于计算环形缓存队列长度=总缓存空间大小/(上层应用线程数*分类后单个数据包大小);
环形缓存队列创建单元1.2,用于以设定的环形缓存队列长度创建两个环形缓存队列;
环形缓存队列分工设置单元1.3,用于设定两个环形缓存队列中一个为忙碌队列,另一个为空闲队列;
缓存池设定单元1.4,用于将忙碌队列和空闲队列设定为一个缓存池;
数据缓存模块2,用于设置网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址依次映射到空闲队列;数据缓存模块2包括:
数据包接收单元2.1,用于设置网卡驱动从数据链路接收数据包到接收链路环中;
数据包分类单元2.2,用于设置网卡驱动对数据包进行hash分类;
数据包缓存单元2.3,用于设置网卡驱动通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中;
地址存储单元2.4,用于设置网卡驱动将忙碌队列缓存数据包的地址依次映射到空闲队列;
缓存地址获取模块3,通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
数据处理模块4,用于通过上层应用通过忙碌队列的读指针依次获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址;数据处理模块4包括:
数据包获取单元4.1,用于设置上层应用通过忙碌队列的读指针依次获取缓存的数据包;
数据包处理单元4.2,用于依次对缓存数据包进行处理;
地址释放单元4.3,用于设置上层应用通过空闲队列的写指针从空闲队列依次获取并释放处理完的缓存数据包在忙碌队列的地址;
缓存数量确定模块5,用于获取忙碌队列及空闲队列实时的读指针和写指针,并根据两个队列各自实时的读写指针的关系,判断缓存数据包在存储池的状态,以及是否需要增设缓存池;缓存数量确定模块5包括:
指针获取单元5.1,用于获取忙碌队列及空闲队列实时的读指针和写指针;
指针相等判断单元5.2,用于判断忙碌队列的读指针和写指针是否相等;
队列为空判定单元5.3,用于忙碌队列的读指针和写指针相等时,判定忙碌队列为空,无缓存数据包;
忙碌队列写指针判断单元5.4,用于判断是否忙碌队列的下一个写指针为读指针,即忙碌队列写指针+1=忙碌队列读指针;
忙碌队列已满判定单元5.5,用于忙碌队列的下一个写指针为读指针时,判定忙碌队列已满;
空闲队列读指针判断单元5.6,用于判断空闲队列的下一个读指针大于写指针,即空闲队列读指针+1>空闲队列写指针;
空闲地址用尽判定单元5.7,用于判定空闲队列的空闲内存地址已消耗完毕;
缓存池增设单元5.8,用于忙碌队列已满及空闲队列的空闲内存地址已消耗完毕时,增设缓存池。
实施例4:
本发明提供一种终端,
处理器、存储器,其中,
该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述第一方面或第二方面所述的方法。
实施例5:
本发明提供一种存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的方法。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种网卡数据包缓存管理方法,其特征在于,包括如下步骤:
S1.设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;
S2.网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址依次映射到空闲队列;
S3.通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
S4.上层应用通过忙碌队列的读指针依次获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址。
2.如权利要求1所述的网卡数据包缓存管理方法,其特征在于,还包括如下步骤:
S5.获取忙碌队列及空闲队列实时的读指针和写指针,并根据两个队列各自实时的读写指针的关系,判断缓存数据包在存储池的状态,以及是否需要增设缓存池。
3.如权利要求2所述的网卡数据包缓存管理方法,其特征在于,步骤S1具体步骤如下:
S11.计算环形缓存队列长度=总缓存空间大小/(上层应用线程数*分类后单个数据包大小);
S12.以设定的环形缓存队列长度创建两个环形缓存队列;
S13.设定两个环形缓存队列中一个为忙碌队列,另一个为空闲队列;
S14.将忙碌队列和空闲队列设定为一个缓存池。
4.如权利要求3所述的网卡数据包缓存管理方法,其特征在于,步骤S2具体步骤如下:
S21.网卡驱动从数据链路接收数据包到接收链路环中;
S22.网卡驱动对数据包进行hash分类;
S23.网卡驱动通过忙碌队列的写指针将分类后数据包依次缓存到忙碌队列中;
S24.网卡驱动将忙碌队列缓存数据包的地址依次映射到空闲队列。
5.如权利要求4所述的网卡数据包缓存管理方法,其特征在于,步骤S4具体步骤如下:
S41.上层应用通过忙碌队列的读指针依次获取缓存的数据包;
S42.上层应用依次对缓存数据包进行处理;
S43.上层应用通过空闲队列的写指针从空闲队列依次获取并释放处理完的缓存数据包在忙碌队列的地址。
6.如权利要求5所述的网卡数据包缓存管理方法,其特征在于,步骤S5具体步骤如下:
S51.获取忙碌队列及空闲队列实时的读指针和写指针;
S52.判断忙碌队列的读指针和写指针是否相等;
若是,判定忙碌队列为空,无缓存数据包,返回步骤S2;
若否,进入步骤S53,或者进入步骤S54;
S53.判断是否忙碌队列的下一个写指针为读指针,即忙碌队列写指针+1=忙碌队列读指针;
若是,判定忙碌队列已满,进入步骤S55;
若否,返回步骤S2;
S54.判断空闲队列的下一个读指针大于写指针,即空闲队列读指针+1>空闲队列写指针;
若是,判定空闲队列的空闲内存地址已消耗完毕,进入步骤S55;
若否,返回步骤S2;
S55.重复步骤S1步骤增设缓存池。
7.一种网卡数据包缓存管理装置,其特征在于,包括:
缓存池设置模块(1),用于设置环形缓存队列,并根据总缓存空间大小及上层应用线程数设定环形缓存队列长度,再将两个环形缓存队列设置为一个缓存池,且设定缓存池中两个环形缓存队列分别为忙碌队列和空闲队列;
数据缓存模块(2),用于设置网卡驱动从数据链路接收数据包,将数据包分类,并通过忙碌队列的写指针依次将分类后数据包缓存到忙碌队列中,再将忙碌队列中缓存数据包的地址依次映射到空闲队列;
缓存地址获取模块(3),通过空闲队列读指针获取缓存数据包在忙碌队列的最新地址;
数据处理模块(4),用于通过上层应用通过忙碌队列的读指针依次获取缓存的数据包,对数据包进行处理,并在数据包处理完成后,通过空闲队列的写指针依次释放该处理完的缓存数据包在忙碌队列的地址。
8.如权利要求7所述的网卡数据包缓存管理装置,其特征在于,还包括:
缓存数量确定模块(5),用于获取忙碌队列及空闲队列实时的读指针和写指针,并根据两个队列各自实时的读写指针的关系,判断缓存数据包在存储池的状态,以及是否需要增设缓存池。
9.一种终端,其特征在于,
处理器、存储器,其中,
该存储器用于存储计算机程序, 该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述权利要求 1-6 任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述权利要求1-6任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011264058.9A CN112491979B (zh) | 2020-11-12 | 2020-11-12 | 一种网卡数据包缓存管理方法、装置、终端及存储介质 |
PCT/CN2021/121432 WO2022100310A1 (zh) | 2020-11-12 | 2021-09-28 | 一种网卡数据包缓存管理方法、装置、终端及存储介质 |
US18/245,791 US11777873B1 (en) | 2020-11-12 | 2021-09-28 | Method and apparatus for managing buffering of data packet of network card, terminal and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011264058.9A CN112491979B (zh) | 2020-11-12 | 2020-11-12 | 一种网卡数据包缓存管理方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112491979A CN112491979A (zh) | 2021-03-12 |
CN112491979B true CN112491979B (zh) | 2022-12-02 |
Family
ID=74930385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011264058.9A Active CN112491979B (zh) | 2020-11-12 | 2020-11-12 | 一种网卡数据包缓存管理方法、装置、终端及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11777873B1 (zh) |
CN (1) | CN112491979B (zh) |
WO (1) | WO2022100310A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491979B (zh) * | 2020-11-12 | 2022-12-02 | 苏州浪潮智能科技有限公司 | 一种网卡数据包缓存管理方法、装置、终端及存储介质 |
CN114189462B (zh) * | 2021-12-08 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种流量采集方法、装置、电子设备及存储介质 |
CN117407148B (zh) * | 2022-07-08 | 2024-06-18 | 华为技术有限公司 | 数据写入方法、读取方法、装置、电子设备以及存储介质 |
CN115865831A (zh) * | 2023-02-25 | 2023-03-28 | 广州翼辉信息技术有限公司 | 一种基于多队列加速网络性能的方法 |
CN116501657B (zh) * | 2023-06-19 | 2023-11-10 | 阿里巴巴(中国)有限公司 | 缓存数据的处理方法、设备及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707564A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 用于零拷贝缓冲区队列网络数据发送和接收的处理方法和装置 |
CN102541779A (zh) * | 2011-11-28 | 2012-07-04 | 曙光信息产业(北京)有限公司 | 一种提高多数据缓冲区dma效率的系统和方法 |
CN102546386A (zh) * | 2011-10-21 | 2012-07-04 | 北京安天电子设备有限公司 | 自适应多网卡捕包方法及装置 |
CN105071973A (zh) * | 2015-08-28 | 2015-11-18 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
WO2019227724A1 (zh) * | 2018-05-28 | 2019-12-05 | 深圳市道通智能航空技术有限公司 | 数据读写方法、装置以及环形队列 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267293B (zh) * | 2008-04-18 | 2011-03-30 | 清华大学 | 基于分层模型的流媒体隐蔽通信方法 |
CN101764760B (zh) | 2010-03-24 | 2011-11-16 | 深圳市中科新业信息科技发展有限公司 | 多链路报文捕获方法、多链路报文处理方法及系统 |
JP5817193B2 (ja) * | 2011-04-15 | 2015-11-18 | セイコーエプソン株式会社 | 記録装置、記録装置の制御方法、及び、プログラム |
CN103391256B (zh) | 2013-07-25 | 2016-01-13 | 武汉邮电科学研究院 | 一种基于Linux系统的基站用户面数据处理优化方法 |
CN103885527A (zh) * | 2014-04-15 | 2014-06-25 | 东南大学 | 一种基于rrc编码的时钟偏差补偿装置 |
CN105786718A (zh) | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 计数处理方法及装置 |
CN104809075B (zh) * | 2015-04-20 | 2017-09-12 | 电子科技大学 | 一种存取实时并行处理的固态记录装置及方法 |
CN106502934A (zh) * | 2016-11-09 | 2017-03-15 | 上海微小卫星工程中心 | 高速一体化星载数据管理系统 |
CN108496161A (zh) | 2017-09-29 | 2018-09-04 | 深圳市大疆创新科技有限公司 | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 |
CN108683536B (zh) * | 2018-05-18 | 2021-01-12 | 东北大学 | 异步片上网络的可配置双模式融合通信方法及其接口 |
CN109062826B (zh) | 2018-08-16 | 2022-04-15 | 北京算能科技有限公司 | 数据传输方法及系统 |
CN109783250B (zh) | 2018-12-18 | 2021-04-09 | 中兴通讯股份有限公司 | 一种报文转发方法及网络设备 |
CN112491979B (zh) | 2020-11-12 | 2022-12-02 | 苏州浪潮智能科技有限公司 | 一种网卡数据包缓存管理方法、装置、终端及存储介质 |
-
2020
- 2020-11-12 CN CN202011264058.9A patent/CN112491979B/zh active Active
-
2021
- 2021-09-28 WO PCT/CN2021/121432 patent/WO2022100310A1/zh active Application Filing
- 2021-09-28 US US18/245,791 patent/US11777873B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707564A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 用于零拷贝缓冲区队列网络数据发送和接收的处理方法和装置 |
CN102546386A (zh) * | 2011-10-21 | 2012-07-04 | 北京安天电子设备有限公司 | 自适应多网卡捕包方法及装置 |
CN102541779A (zh) * | 2011-11-28 | 2012-07-04 | 曙光信息产业(北京)有限公司 | 一种提高多数据缓冲区dma效率的系统和方法 |
CN105071973A (zh) * | 2015-08-28 | 2015-11-18 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
WO2019227724A1 (zh) * | 2018-05-28 | 2019-12-05 | 深圳市道通智能航空技术有限公司 | 数据读写方法、装置以及环形队列 |
Also Published As
Publication number | Publication date |
---|---|
WO2022100310A1 (zh) | 2022-05-19 |
US20230291696A1 (en) | 2023-09-14 |
CN112491979A (zh) | 2021-03-12 |
US11777873B1 (en) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112491979B (zh) | 一种网卡数据包缓存管理方法、装置、终端及存储介质 | |
CN111949568B (zh) | 一种报文处理方法、装置及网络芯片 | |
CN109885453B (zh) | 基于流数据处理的大数据平台监控系统 | |
CN111562889B (zh) | 数据处理方法、装置、系统及存储介质 | |
CN113518130A (zh) | 一种基于多核处理器的分组突发负载均衡方法及系统 | |
CN108566411A (zh) | 静态资源获取方法、电子设备和存储介质 | |
CN111813666A (zh) | 一种内存泄露定位的方法、装置、介质和电子设备 | |
WO2024109068A1 (zh) | 程序监控方法、装置、电子设备和存储介质 | |
CN117114623B (zh) | 一种园区内监控设备的智慧管理方法及系统 | |
CN112732560B (zh) | 文件描述符泄露风险的检测方法及装置 | |
CN116303173B (zh) | 减少rdma引擎片上缓存的方法、装置、系统及芯片 | |
CN115883340B (zh) | 一种基于hplc和hrf双模通信故障处理方法和设备 | |
CN117056246A (zh) | 一种数据缓存方法及系统 | |
CN204425400U (zh) | 应用服务器系统 | |
CN210804421U (zh) | 一种服务器系统 | |
CN109284257A (zh) | 一种日志写入方法、装置、电子设备及存储介质 | |
CN114124643B (zh) | 一种基于PaaS的网络设备流量采集方法及装置 | |
CN116009770A (zh) | 读响应电路、方法、数据传输系统及相关设备 | |
CN113259274B (zh) | 多核模式下处理网络报文乱序和负载均衡的方法及存储介质 | |
CN109120665B (zh) | 高速数据包采集方法及装置 | |
CN108595367B (zh) | 一种基于局域网内计算机集群的服务器系统 | |
CN116662603B (zh) | 基于kafka的时间轴管控方法、系统、电子设备及存储介质 | |
CN109218119B (zh) | 网络丢包诊断方法及网络设备 | |
CN114629824B (zh) | 丢包定位方法、装置、计算设备及介质 | |
CN117648287B (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 |