CN113328960A - 一种队列缓存管理方法、装置、存储介质及设备 - Google Patents
一种队列缓存管理方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN113328960A CN113328960A CN202010129367.9A CN202010129367A CN113328960A CN 113328960 A CN113328960 A CN 113328960A CN 202010129367 A CN202010129367 A CN 202010129367A CN 113328960 A CN113328960 A CN 113328960A
- Authority
- CN
- China
- Prior art keywords
- queue
- buffer
- scheduling
- message
- value
- 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
- 238000007726 management method Methods 0.000 title abstract description 30
- 239000000872 buffer Substances 0.000 claims abstract description 226
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000004891 communication Methods 0.000 abstract description 11
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/6245—Modifications to standard FIFO or LIFO
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种队列缓存管理方法、装置、存储介质及设备,应用于通信技术领域,有助于提高获取的队列最大突发值的准确性和避免报文的丢失。该方法包括:任一转发设备首先在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与用于缓存待转发报文的第一队列的报文调度相同,然后可以根据获取到的第二队列的报文调度,获取与第二队列对应的缓存buffer。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种队列缓存管理方法、装置、存储介质及设备。
背景技术
随着通信技术的快速发展,目前已从第三代移动通信(3rd generation,3G),发展到第四代移动通信(4rd generation,4G)以及即将被广泛应用的第五代移动通信(5rdgeneration,5G)技术,相比于3G时代的纯数据通信业务,4G和5G时代业务传输(如视频业务等)的数据量更大,出现业务突发的次数也更多,因此,为了减少业务传输中的丢包率,需要为各个设备端口业务队列设置足够多的缓存(buffer),用以应对可能出现的最大业务突发值(即最大的瞬间数据传输量),防止数据包丢失。
目前通常是通过中央处理器(central processing unit,CPU)轮询的方式,在各个采样点采集到队列的buffer使用情况,并从中确定出队列的最大突发值,进而可以根据该最大突发值,确定出需要为队列分配的buffer值。但这种通过CPU轮询来确定队列最大突发值的方式,得到的结果并不准确。
发明内容
本申请实施例提供了一种队列缓存管理方法、装置、存储介质及设备,有助于提高获取的队列最大突发值的准确性和避免报文的丢失。
第一方面,本申请提供了一种队列缓存管理方法,该方法包括:在进行队列缓存管理时,转发设备(如图1中的转发设备103)首先在预设时长内获取第二队列(如图1中的第二队列102)的报文调度,其中,第二队列的报文调度与用于缓存待转发报文的第一队列(如图1中的第一队列101)的报文调度(即报文出队和/或入队操作)相同,然后转发设备可以根据获取到的第二队列的报文调度,获取与第二队列对应的缓存buffer。
与传统技术相比,本申请实施例是预先在预设时长内为第一队列和第二队列执行相同的报文调度(即报文出队和/或入队操作),这样,即使第一队列出现了报文丢失现象,第二队列中也不会出现同样的报文丢失现象,并可以记录到预设时长内对应的buffer,从而可以根据该buffer调整第一队列对应的buffer,进而能够有效提高获取的第一队列最大突发值的准确性。
一种可能的实现方式中,该方法还包括:转发设备根据第二队列对应的buffer,调整第一队列对应的buffer。这样,能够根据该最大突发值将第一队列buffer调整到更合适的数值,以有效避免报文的丢失。
一种可能的实现方式中,根据第二队列对应的buffer,调整第一队列对应的buffer包括:根据第二队列的buffer最大值,调整第一队列对应的buffer,使得调整后的第一队列对应的buffer大于或等于第二队列的buffer最大值。这样,可以使得调整后的第一队列的buffer足够大,即使在发生最大业务突发情况时,也不会再发生报文丢失现象。
一种可能的实现方式中,根据第二队列的报文调度,获取与第二队列对应的缓存buffer包括:根据第二队列的报文调度,获取第二队列在所述预设时长内N个调度时刻的buffer值;从获取的预设时长内N个调度时刻的buffer值中,选取满足预设条件的buffer值作为第二队列对应的buffer。以便后续可以利用第二队列对应的buffer准确确定出第一队列在预设时长内的最大突发值。
一种可能的实现方式中,在预设时长内获取第二队列的报文调度包括:根据第二队列的报文调度,更新计数器;在预设时长内,获取所述计数器的值。这样,利用更新计数器的计数值的方式,取代了真正的报文传输操作,从而可以有效减少资源的消耗。
一种可能的实现方式中,根据第二队列的报文调度,获取与第二队列对应的缓存buffer包括:获取预设时长内N个调度时刻的计数器的值;从获取的N个调度时刻的计数器的值中,选取满足预设条件的计数器的值;根据计数器的值和待转发报文长度,获取第二队列对应的buffer。这样,由于预先设置有用于统计第二队列的调度行为的计数器,用以完全跟随、模拟第一队列的报文入队和出队的报文调度并做相应计数,同时记录每一时刻的计数值。因此,可以根据预设条件先从计数器在预设时长内N个调度时刻的计数值中选择出符合条件的计数值,然后将该计数值对应的待转发报文长度作为第二队列对应的buffer,并将该buffer作为第一队列在预设时长内的最大突发值。从而可以利用该最大突发值将第一队列buffer调整到更合适的数值,以有效避免报文的丢失。
第二方面,本申请还提供了一种队列缓存管理装置,该装置包括:第一获取单元,用于在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与第一队列的报文调度相同,第一队列用于缓存待转发的报文;第二获取单元,用于根据第二队列的报文调度,获取与第二队列对应的缓存buffer。
一种可能的实现方式中,该装置还包括:调整单元,用于根据第二队列对应的buffer,调整第一队列对应的buffer。
一种可能的实现方式中,第二获取单元包括:第二获取子单元,用于根据第二队列的报文调度,获取第二队列在所述预设时长内N个调度时刻的buffer值;第一选取子单元,用于从获取的预设时长内N个调度时刻的buffer值中,选取满足预设条件的buffer值作为第二队列对应的buffer。
一种可能的实现方式中,第一获取单元包括:更新子单元,用于根据第二队列的报文调度,更新计数器;第一获取子单元,用于在预设时长内,获取计数器的值。
一种可能的实现方式中,第二获取单元包括:第三获取子单元,用于获取预设时长内N个调度时刻的计数器的值;第二选取子单元,用于从获取的N个调度时刻的计数器的值中,选取满足预设条件的计数器的值;第四获取子单元,用于根据计数器的值和待转发报文长度,获取第二队列对应的buffer。
第三方面,本申请还提供了一种队列缓存管理设备,该队列缓存管理包括:存储器、处理器;
存储器,用于存储指令;处理器,用于执行存储器中的指令,执行上述第一方面及其任意一种可能的实现方式中的方法。
第四方面,本申请还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面及其任意一种可能的实现方式中的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例在进行队列缓存管理时,转发设备首先在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与用于缓存待转发报文的第一队列的报文调度相同,然后可以根据获取到的第二队列的报文调度,获取与第二队列对应的缓存buffer。可见,本申请实施例预先在预设时长内为第一队列和第二队列执行相同的报文调度(即报文出队和/或入队操作),这样,即使第一队列出现了报文丢失现象,第二队列中也不会出现同样的报文丢失现象,并可以记录到预设时长内对应的buffer,从而可以根据该buffer调整第一队列对应的buffer,因此,相较于目前通过CPU轮询来确定第一队列最大突发值的方法而言,能够有效提高获取的第一队列最大突发值的准确性,进而能够根据该最大突发值将第一队列buffer调整到更合适的数值,以有效避免报文的丢失。
附图说明
图1为本申请实施例应用的一种队列缓存管理架构的示例图;
图2为本申请实施例提供的第一队列预置缓存和第二队列预置缓存的示意图;
图3为本申请实施例提供的一种队列缓存管理方法的流程图;
图4为本申请实施例提供的第一调度时刻第一队列和第二队列的buffer的示意图之一;
图5为本申请实施例提供的第一调度时刻第一队列和第二队列的buffer的示意图之二;
图6为本申请实施例提供的第二调度时刻第一队列和第二队列的buffer的示意图之一;
图7为本申请实施例提供的第二调度时刻第一队列和第二队列的buffer的示意图之二;
图8为本申请实施例提供的第三调度时刻第一队列和第二队列的buffer的示意图;
图9为本申请实施例提供的第四调度时刻第一队列和第二队列的buffer的示意图;
图10为本申请实施例提供的一种队列缓存管理装置的结构框图;
图11为本申请实施例提供的一种队列缓存管理设备的结构示意图。
具体实施方式
本申请实施例提供了一种队列缓存管理方法、装置、存储介质及设备,有助于提高获取的队列最大突发值的准确性和避免报文的丢失。
下面结合附图,对本申请的实施例进行描述。
参见图1,其示出了本申请实施例应用的一种队列缓存管理架构的示例图,如图1所示,该场景中,包括了队列集合100中的第一队列101、第二队列102和转发设备103。队列集合100是转发设备103上的队列集合,即转发设备103包括队列集合100且对该队列集合100进行管理。转发设备103可以控制队列集合100中每一队列(如第一队列101和第二队列102)中报文的入队和出队操作。
其中,队列集合100中的每一队列指的是一种特殊的线性表,特殊之处就在于其包含的所有队列均为先进先出(first input first output,FIFO)的队列,队列中的缓存buffer用于缓存待转发的报文。队列集合100可位于转发设备103的计算机存储器中,如动态随机存取存储器(dynamic random access memory,DRAM)中等,队列集合100中包含有第一队列101和第二队列102。如图1所示,第一队列101和第二队列102的左侧为报文进端口,用于进行报文入队操作。第一队列101和第二队列102的右侧为报文出端口,用于进行报文出队操作。为了能够在对第一队列101和第二队列102执行相同的报文调度操作后,可以利用第二队列实际使用的buffer,来准确确定出第一队列最大突发值,通常会预先将第二队列的预置buffer设置为第一队列的预置buffer的M倍,其中,M为大于1的正数。比如,可以将M取值为10,此时,若预先将第一队列的预置buffer设定为100K byte,则可以将第二队列的预置buffer设定为1000K byte。如图2所示,图2中的每个小长方框代表所属队列的预置buffer中一个报文可以占据的存储空间,可以看出第一队列的预置buffer可以存储的报文数量要远小于第二队列的预置buffer,这样,如果在执行报文调度时,第一队列出现了报文的丢失现象,那么第二队列中将不会出现同样的报文丢失现,且由于第二队列的预置buffer足够大,还可以记录到各个报文调度时刻第二队列实际使用的bufferr,从而可以根据该buffer调整第一队列的buffer值。
转发设备103中包含流量管理芯片(traffic manager,TM),用于控制队列集合100中各个队列(如第一队列101和第二队列102)进行报文调度(即报文出队和/或入队操作),实施报文转发行为,以及记录和调整各个队列的buffer。
本申请实施例中,转发设备103首先在预设时长内,控制第二队列和第一队列执行相同的报文调度(即报文出队和/或入队操作),并获取第二队列的报文调度;然后再根据获取到的第二队列的报文调度,获取与第二队列实际使用的buffer,进一步可以根据该buffer调整第一队列的buffer,而不再采用通常的CPU轮询来确定第一队列最大突发值的方法,从而能够有效提高获取的第一队列最大突发值的准确性,进而能够根据该最大突发值将第一队列buffer调整到更合适的数值,以有效避免报文的丢失。
基于以上应用场景,本申请实施例提供了一种队列缓存管理方法,该方法可应用于转发设备103。下面对该方法进行介绍。
S301:在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与第一队列的报文调度相同,第一队列用于缓存待转发的报文。
在本实施例中,将用于缓存待转发的报文的队列定义为第一队列。为了准确获取到第一队列的最大突发值,本实施例预先设置有第二队列,且在预设时长内的每一调度时刻,控制第一队列和第二队列执行相同的报文调度(即报文出队和/或入队操作)。比如,第二队列可以是预先为第一队列分配的一个影子队列,影子队列的预置buffer可以设置为第一队列的预置buffer的M倍,用以作为对第一队列的最大突发值的监控范围。进而可以在获取到第二队列在预设时长内的buffer,实现对第一队列对应的buffer的调整。第一队列的最大突发值可用以调整第一队列对应的buffer。
其中,预设时长可以是预先选择的包含有至少一个调度时刻的时长,可以为1小时或24小时等,具体取值可根据实际情况进行选取,本申请实施例对此不进行限制。需要说明的是,由于队列的报文调度行为通常是以24小时作为一个周期,即每24小时内,同一队列会在相同的调度时刻执行相同的报文出队和/或入队操作,因此,一种优选的实现方式是,可以将预设时长设置为24小时,这样,可以准确捕捉到第一队列在一个报文调度周期内的最大突发值。
在本实施例的一种可能的实现方式中,为了减少传输资源消耗,可以设置用于统计第二队列的调度行为的计数器,用以完全跟随、模拟第一队列的报文入队和出队的报文调度并做相应计数,同时记录每一时刻的计数值。
基于此,上述步骤S301中“在预设时长内获取第二队列的报文调度”的具体实现过程可以包括下述步骤A1-A2:
步骤A1:根据第二队列的报文调度,更新计数器。
在本实现方式中,在预设时长内,为第一队列执行报文入队操作的同时,为计数器执行相同数量的计数增加操作,以及为第一队列执行报文出队操作的同时,也为计数器执行相同数量的计数减少操作,实现计数器的更新。例如,假设某一调度时刻,第一队列调度入队100K byte报文且调度出队40K byte报文,此时,即可将计数器的计数值先增加100再减掉40,以取代真正的报文传输操作,减少资源消耗。
步骤A2:在预设时长内,获取计数器的值。.
在本实现方式中,通过步骤A1根据第二队列的报文调度更新计数器的同时,可以获取到计数器在预设时长内每一调度时刻对应的计数值。
S302:根据第二队列的报文调度,获取与第二队列对应的缓存buffer。
在本实施例中,通过步骤S301获取到预设时长内第二队列的报文调度后,进一步可以根据获取到的第二队列的报文调度,获取与第二队列在预设时长内对应的缓存buffer。
具体来讲,一种可选的实现方式是,本步骤S302的具体实现过程可以包括下述步骤B1-B2:
步骤B1:根据第二队列的报文调度,获取第二队列在预设时长内N个调度时刻的buffer值。在本实现方式中,获取到第二队列在预设时长内的报文调度后,即可确定出在预设时段内的N个调度时刻,第二队列在执行了报文出队和/或入队操作后,实际使用的bufferr。其中,N为大于1的正整数。可以理解的是,N的取值越大,获取到的数据越多,进而有助于提高后续获取的第一队列最大突发值的准确性。
步骤B2:从获取的预设时长内N个调度时刻的buffer值中,选取满足预设条件的buffer值作为第二队列对应的buffer。在本实现方式中,通过步骤B1获取到第二队列在预设时长内N个调度时刻的buffer值后,进一步可以从中选择出满足预设条件的buffer值作为第二队列对应的buffer,用以调整第一队列的buffer值。其中,预设条件可以根据实际情况进行设定。比如预设条件可以包括第一队列转发报文丢失的容忍度或者转发报文长度的限值等。由于在每一调度时刻,第二队列均与第一队列执行了相同的报文调度,即执行了相同的报文入队和/或出队操作。因此,若预设条件要求第一队列在转发报文时不允许有任何报文丢失,则可以从第二队列在预设时长内N个调度时刻的buffer值中选择出的buffer最大值作为第二队列对应的buffer,并将该buffer最大值作为第一队列在预设时长内的最大突发值。从而可利用该最大突发值,调整第一队列的buffer值。但若预设条件要求第一队列在转发报文时允许有一定数量(如0.5%)报文丢失的容忍度,则可以先从第二队列在预设时长内N个调度时刻的buffer值中选择出的buffer最大值,再利用该buffer最大值乘以99.5%得到的buffer作为第二队列对应的buffer,并将该buffer作为第一队列在预设时长内的最大突发值。从而可利用该最大突发值,调整第一队列的buffer值。
该步骤的另一种可能的实现方式中,若预先设置有用于统计第二队列的调度行为的计数器,则可以在统计出该计数器在预设时长内的所有计数增加操作和计数减少操作后,获取到该计数器在预设时长内N个调度时刻的计数值。从所获取的计数值中选取出满足预设条件的计数器的值,进而再根据该计数器的值和待转发报文长度,获取第二队列对应的buffer。其中,预设条件可以根据实际情况进行设定。比如预设条件可以包括第一队列转发报文丢失的容忍度等。由于计数器是完全跟随、模拟第一队列的报文入队和出队的报文调度并做相应计数,同时记录这N个调度时刻的计数值。因此,若预设条件要求第一队列在转发报文时不允许有任何报文丢失,则可以先从计数器在预设时长内N个调度时刻的计数值中选择出最大计数值,然后再计算出该最大计数值对应统计的待转发报文长度(例如计数值100可以代表统计第二队列调度的待转发报文的长度为100K byte),用以作为第二队列对应的buffer,并将该buffer作为第一队列在预设时长内的最大突发值。从而可利用该最大突发值,调整第一队列的buffer值。对于根据其他预设条件获取第二队列对应的buffer的具体实现过程在此不再一一赘述,可参照上述过程实现。
为便于理解上述实现过程,本申请实施例将通过具体示例对其进行详细介绍。
举例说明:假设预设时长为24小时,并从该24小时内时间顺序选取4个调度时刻,并按照时间先后顺序分别依次定义为T1时刻、T2时刻、T3时刻以及T4时刻。且预设条件是要求第一队列在转发报文时不允许有任何报文丢失。在起始时刻(非前述4个时刻),将第一队列的预置buffer设定为100K byte,同时将第二队列的预置buffer设定为1000K byte。以及将每个待转发报文长度设定为20K byte。
假设在T1时刻,第一队列调度入队的报文为100K byte,同时调度出队的报文为40K byte,则第二队列也执行相同数量的报文调度,即调度入队的报文为100K byte,调度出队的报文为40K byte。
如图4所示,其示出了在T1时刻第一队列和第二队列在执行了调度入队100K byte报文时,各自实际使用的bufferr。图4中每一灰色小方框分别代表所属队列buffer中一个报文占据的20K byte存储空间,可见,此时第一队列缓存已被占满(即100K byte的存储空间均存储了入队报文),第二队列缓存还有剩余存储空间(即1000K byte的存储空间中只有100K byte的存储空间存储了入队报文)。此时,第一队列实际使用的buffer值为100Kbyte,第二队列实际使用的buffer值为100K byte。
如图5所示,其示出了在T1时刻第一队列和第二队列在继续执行了调度出队40Kbyte报文时,各自实际使用的bufferr。图5中每一灰色小方框分别代表所属队列buffer中一个报文占据的20K byte存储空间,而图5中第一队列缓存和第二队列缓存对应的大方框外的灰色小方框则分别表示各自队列调度出队的报文。可见,此时第一队列缓存剩余了40Kbyte存储空间(即在调度出队40K byte报文后,释放了之前被40K byte报文占据的40Kbyte存储空间),第二队列缓存的剩余存储空间也增加了40K byte(即在调度出队40K byte报文后,释放了之前被40K byte报文占据的40K byte存储空间)。此时,第一队列实际使用的buffer值为60K byte,第二队列实际使用的buffer值为60K byte。
假设在T2时刻,第一队列调度入队的报文仍为100K byte,同时调度出队的报文仍为40K byte,则第二队列也执行相同数量的报文调度,即调度入队的报文仍为100K byte,调度出队的报文仍为40K byte。
如图6所示,其示出了在T2时刻第一队列和第二队列在执行了调度入队100K byte报文时,各自实际使用的bufferr。图6中每一灰色小方框分别代表所属队列buffer中一个报文占据的20K byte存储空间。由于第一队列的预置buffer只有100K byte,且经过T1时刻,第一队列实际使用的buffer值为60K byte,即,只剩下40K byte的存储空间,再加上此时调度入队的100K byte报文的总和将超过第一队列的预置buffer(即100K byte),所以,只能继续存储40K byte报文并将多余的60K byte报文丢弃掉。由于经过T1时刻第二队列实际使用的buffer值仅为60K byte,即第二队列中仅存储有60K byte报文(远小于预置的1000K byte存储空间),所以第二队列可以正常调度入队100K byte报文。如图6所示,第一队列缓存大方框上方箭头指向的3个黑色小方框代表了被第一队列丢弃的60K byte报文。可见,此时第一队列缓存已被占满,而第二队列缓存实际使用的buffer值则变为160K byte(即图6中第二队列缓存大方框中的8个灰色小方框)。所以,此时第一队列实际使用的buffer值为100K byte,第二队列实际使用的buffer值为160K byte。
如图7所示,其示出了在T2时刻第一队列和第二队列在继续执行了调度出队40Kbyte报文时,各自实际使用的bufferr。图7中每一灰色小方框分别代表所属队列buffer中一个报文占据的20K byte存储空间,而图7中第一队列缓存和第二队列缓存对应的大方框外的灰色小方框则分别表示各自队列调度出队的报文。可见,此时第一队列缓存剩余了40Kbyte存储空间(即在调度出队40K byte报文后,100K byte的存储空间释放了其中的40Kbyte存储空间),第二队列缓存的剩余存储空间也增加了40K byte(即在调度出队40K byte报文后,释放了之前被40K byte报文占据的40K byte存储空间)。此时,第一队列实际使用的buffer值为60K byte,第二队列实际使用的buffer值为120K byte。
假设在T3时刻,第一队列并未有调度入队的报文,同时调度出队的报文为40Kbyte,则第二队列也执行相同数量的报文调度,即未有调度入队的报文,调度出队的报文仍为40K byte。
由于在T3时刻第一队列和第二队列并未调度入队任何报文。所以,此时第一队列和第二队列实际使用的buffer值均不变,仍如图7所示,第一队列实际使用的buffer值仍为60K byte,第二队列实际使用的buffer值仍为120K byte。
如图8所示,其示出了在T3时刻第一队列和第二队列在继续执行了调度出队40Kbyte报文时,各自实际使用的bufferr。图8中每一灰色小方框分别代表所属队列buffer中一个报文占据的20K byte存储空间,而图8中第一队列缓存和第二队列缓存对应的大方框外的灰色小方框则分别表示各自队列调度出队的报文。可见,此时第一队列缓存增加剩余了40K byte存储空间(即在调度出队40K byte报文后,释放了40K byte的存储空间),第二队列缓存的剩余存储空间也增加了40K byte(即在调度出队40K byte报文后,释放了之前被40K byte报文占据的40K byte存储空间)。此时,第一队列实际使用的buffer值为20Kbyte,第二队列实际使用的buffer值为80K byte。
假设在T4时刻,第一队列仍未有调度入队的报文,同时调度出队的报文为40Kbyte,则第二队列也执行相同数量的报文调度,即仍未有调度入队的报文,调度出队的报文仍为40K byte。
由于在T4时刻第一队列和第二队列并未调度入队任何报文。所以,此时第一队列和第二队列实际使用的buffer值均不变,仍如图8所示,第一队列实际使用的buffer值仍为20K byte,第二队列实际使用的buffer值仍为80K byte。
如图9所示,其示出了在T4时刻第一队列和第二队列在继续执行了调度出队40Kbyte报文时,各自实际使用的buffer。图9中每一灰色小方框分别代表所属队列buffer中一个报文占据的20K byte存储空间。由于经过T3时刻第一队列实际使用的buffer值仅为20Kbyte,即第一队列中存储的报文仅为20K byte,所以此时无法调度出队40K byte报文,仅能将存储的20K byte报文调度出队。由于经过T3时刻第二队列实际使用的buffer值为80Kbyte,即第二队列中存储有80K byte报文,所以第二队列可以正常调度出队40K byte报文。如图9所示,图9中第一队列缓存和第二队列缓存对应的大方框外的灰色小方框则分别表示各自队列调度出队的报文。可见,此时第一队列缓存已全部清空,第二队列缓存的剩余存储空间增加了40K byte(即在调度出队40K byte报文后,释放了之前被40K byte报文占据的40K byte存储空间)。此时,第一队列实际使用的buffer值为0K byte,第二队列实际使用的buffer值为40K byte。
进一步的,由于预设条件是要求第一队列在转发报文时不允许有任何报文丢失,因此,可以从第二队列在上述四个调度时刻(即T1时刻、T2时刻、T3时刻以及T4时刻)实际使用的buffer值中确定出第二队列实际使用的buffer最大值(即160K byte),作为第二队列对应的buffer,并将该buffer最大值作为第一队列在这24小时内的最大突发值。从而可利用该最大突发值,调整第一队列的buffer值。
再进一步的,在本实施例的一种可能的实现方式中,在通过上步骤S302获取到第二队列在预设时长内对应的缓存buffer后,进而可以根据该buffer调整第一队列对应的buffer,
在本实现方式中,为了避免第一队列在转发报文时出现报文丢失的现象,在通过步骤B2确定出在预设时长内第二队列对应的buffer最大值后,进一步可以将第二队列对应的buffer最大值作为调整第一队列的buffer的依据,使得调整后的第一队列的buffer大于或等于第二队列的buffer最大值。具体来讲,在确定出预设时长内第二队列对应的buffer最大值后,进一步可以确定在预设时长内,若第一队列发生最大业务突发情况,第一队列实际所需要使用的buffer值应该大于等于第二队列对应的buffer最大值,这是因为由于在预设时长内第一队列和第二队列执行相同的报文调度(即报文出队和/或入队操作),如果第一队列的buffer值小于第二队列对应的buffer最大值,则会在发生最大业务突发情况时,无法执行与第二队列相同数量的报文入队操作,产生报文丢失的现象。例如,在上述举例中确定出在24小时内第二队列对应的buffer最大值为160K byte后,进一步可以将160K byte作为调整第一队列的buffer的依据,使得调整后的第一队列的buffer大于或等于160Kbyte,否则将产生如图6所示的报文丢失现象。
综上,本实施例提供的一种队列缓存管理方法,在进行队列缓存管理时,首先在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与用于缓存待转发报文的第一队列的报文调度相同,然后可以根据获取到的第二队列的报文调度,获取与第二队列对应的缓存buffer。可见,本申请实施例预先在预设时长内为第一队列和第二队列执行相同的报文调度(即报文出队和/或入队操作),这样,即使第一队列出现了报文丢失现象,第二队列中也不会出现同样的报文丢失现象,并可以记录到预设时长内对应的buffer,从而可以根据该buffer调整第一队列对应的buffer,因此,相较于目前通过CPU轮询来确定第一队列最大突发值的方法而言,能够有效提高获取的第一队列最大突发值的准确性,进而能够根据该最大突发值将第一队列buffer调整到更合适的数值,以有效避免报文的丢失。
为便于更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参见图10所示,本申请实施例提供的队列缓存管理装置1000可设置于转发设备103。该装置1000可以包括:第一获取单元1001和第二获取单元1002。其中,第一获取单元1001用于支持装置1000执行图3所示实施例中的S301。第二获取单元1002用于支持装置1000执行图3所示实施例中的S302。具体的,
第一获取单元1001,用于在预设时长内获取第二队列的报文调度,第二队列的报文调度与第一队列的报文调度相同,第一队列用于缓存待转发的报文;
第二获取单元1002,用于根据第二队列的报文调度,获取与第二队列对应的缓存buffer。
在本实施例的一种实现方式中,该装置还包括:
调整单元,用于根据第二队列对应的buffer,调整第一队列对应的buffer。
在本实施例的一种实现方式中,第二获取单元1002包括:
第二获取子单元,用于根据第二队列的报文调度,获取第二队列在预设时长内N个调度时刻的buffer值;
第一选取子单元,用于从获取的预设时长内N个调度时刻的buffer值中,选取满足预设条件的buffer值作为第二队列对应的buffer。
在本实施例的一种实现方式中,第一获取单元1001包括:
更新子单元,用于根据第二队列的报文调度,更新计数器;
第一获取子单元,用于在预设时长内,获取计数器的值。
在本实施例的一种实现方式中,第二获取单元1002包括:
第三获取子单元,用于获取预设时长内N个调度时刻的计数器的值;
第二选取子单元,用于从获取的N个调度时刻的计数器的值中,选取满足预设条件的计数器的值;
第四获取子单元,用于根据计数器的值和待转发报文长度,获取第二队列对应的buffer。
综上,本实施例提供的一种队列缓存管理装置,在进行队列缓存管理时,首先在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与用于缓存待转发报文的第一队列的报文调度相同,然后可以根据获取到的第二队列的报文调度,获取与第二队列对应的缓存buffer。可见,本申请实施例预先在预设时长内为第一队列和第二队列执行相同的报文调度(即报文出队和/或入队操作),这样,即使第一队列出现了报文丢失现象,第二队列中也不会出现同样的报文丢失现象,并可以记录到预设时长内对应的buffer,从而可以根据该buffer调整第一队列对应的buffer,因此,相较于目前通过CPU轮询来确定第一队列最大突发值的方法而言,能够有效提高获取的第一队列最大突发值的准确性,进而能够根据该最大突发值将第一队列buffer调整到更合适的数值,以有效避免报文的丢失。
参见图11,本申请实施例提供了一种队列缓存管理设备1100,该设备包括存储器1101、处理器1102和通信接口1103,
存储器1101,用于存储指令;
处理器1102,用于执行存储器1101中的指令,执行上述应用于图3所示实施例中的队列缓存管理方法;
通信接口1103,用于进行通信。
存储器1101、处理器1102和通信接口1103通过总线1104相互连接;总线1104可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在具体实施例中,处理器1102用于在预设时长内获取第二队列的报文调度,其中,第二队列的报文调度与用于缓存待转发报文的第一队列的报文调度相同,然后可以根据获取到的第二队列的报文调度,获取与第二队列对应的缓存buffer。该处理器1102的详细处理过程请参考上述图3所示实施例中S301和S302的详细描述,这里不再赘述。
上述存储器1101可以是随机存取存储器(random-access memory,RAM)、闪存(flash)、只读存储器(read only memory,ROM)、可擦写可编程只读存储器(erasableprogrammable read only memory,EPROM)、电可擦除可编程只读存储器(electricallyerasable programmable read only memory,EEPROM)、寄存器(register)、硬盘、移动硬盘、CD-ROM或者本领域技术人员知晓的任何其他形式的存储介质。
上述处理器1102例如可以是中央处理器(central processing unit,CPU)、通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请实施例公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。
上述通信接口1103例如可以是接口卡等,可以为以太(ethernet)接口或异步传输模式(asynchronous transfer mode,ATM)接口。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述队列缓存管理方法。
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (12)
1.一种队列缓存管理方法,其特征在于,所述方法包括:
转发设备在预设时长内获取第二队列的报文调度,所述第二队列的报文调度与第一队列的报文调度相同,所述第一队列用于缓存待转发的报文;
所述转发设备根据所述第二队列的报文调度,获取与所述第二队列对应的缓存buffer。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述转发设备根据所述第二队列对应的buffer,调整所述第一队列对应的buffer。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第二队列的报文调度,获取与所述第二队列对应的缓存buffer包括:
根据所述第二队列的报文调度,获取所述第二队列在所述预设时长内N个调度时刻的buffer值;
从获取的所述预设时长内N个调度时刻的buffer值中,选取满足预设条件的buffer值作为所述第二队列对应的buffer。
4.根据权利要求1或2所述的方法,其特征在于,在预设时长内获取第二队列的报文调度包括:
根据所述第二队列的报文调度,更新计数器;
在所述预设时长内,获取所述计数器的值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第二队列的报文调度,获取与所述第二队列对应的缓存buffer包括:
获取所述预设时长内N个调度时刻的计数器的值;
从所述获取的N个调度时刻的计数器的值中,选取满足预设条件的计数器的值;
根据所述计数器的值和待转发报文长度,获取所述第二队列对应的buffer。
6.一种队列缓存管理装置,其特征在于,所述装置包括:
第一获取单元,用于在预设时长内获取第二队列的报文调度,所述第二队列的报文调度与第一队列的报文调度相同,所述第一队列用于缓存待转发的报文;
第二获取单元,用于根据所述第二队列的报文调度,获取与所述第二队列对应的缓存buffer。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
调整单元,用于根据所述第二队列对应的buffer,调整所述第一队列对应的buffer。
8.根据权利要求6或7所述的装置,其特征在于,所述第二获取单元包括:
第二获取子单元,用于根据所述第二队列的报文调度,获取所述第二队列在所述预设时长内N个调度时刻的buffer值;
第一选取子单元,用于从获取的所述预设时长内N个调度时刻的buffer值中,选取满足预设条件的buffer值作为所述第二队列对应的buffer。
9.根据权利要求6或7所述的装置,其特征在于,所述第一获取单元包括:
更新子单元,用于根据所述第二队列的报文调度,更新计数器;
第一获取子单元,用于在所述预设时长内,获取所述计数器的值。
10.根据权利要求9所述的装置,其特征在于,所述第二获取单元包括:
第三获取子单元,用于获取所述预设时长内N个调度时刻的计数器的值;
第二选取子单元,用于从所述获取的N个调度时刻的计数器的值中,选取满足预设条件的计数器的值;
第四获取子单元,用于根据所述计数器的值和待转发报文长度,获取所述第二队列对应的buffer。
11.一种队列缓存管理设备,其特征在于,所述设备包括存储器、处理器;
所述存储器,用于存储指令;
所述处理器,用于执行所述存储器中的所述指令,执行权利要求1-5任意一项所述的方法。
12.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得所述计算机执行以上权利要求1-5任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010129367.9A CN113328960B (zh) | 2020-02-28 | 2020-02-28 | 一种队列缓存管理方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010129367.9A CN113328960B (zh) | 2020-02-28 | 2020-02-28 | 一种队列缓存管理方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113328960A true CN113328960A (zh) | 2021-08-31 |
CN113328960B CN113328960B (zh) | 2023-11-17 |
Family
ID=77412717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010129367.9A Active CN113328960B (zh) | 2020-02-28 | 2020-02-28 | 一种队列缓存管理方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113328960B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020136230A1 (en) * | 2000-12-15 | 2002-09-26 | Dell Martin S. | Scheduler for a packet routing and switching system |
US20040037302A1 (en) * | 2002-03-25 | 2004-02-26 | Anujan Varma | Queuing and de-queuing of data with a status cache |
JP2011024027A (ja) * | 2009-07-16 | 2011-02-03 | Fujitsu Ltd | パケット送信制御装置、ハードウェア回路およびプログラム |
US20110170552A1 (en) * | 2010-01-08 | 2011-07-14 | Alaxala Networks Corporation | Packet relay apparatus |
CN103516621A (zh) * | 2012-06-29 | 2014-01-15 | 中兴通讯股份有限公司 | 队列调度的方法和装置 |
US20170012851A1 (en) * | 2015-07-07 | 2017-01-12 | Dell Products L.P. | Microburst monitoring system |
CN107196874A (zh) * | 2017-05-16 | 2017-09-22 | 北京国电通网络技术有限公司 | 一种队列调度算法及系统 |
US20180034718A1 (en) * | 2016-07-28 | 2018-02-01 | Cisco Technology, Inc. | Detecting and measuring microbursts in a networking device |
CN109450816A (zh) * | 2018-11-19 | 2019-03-08 | 迈普通信技术股份有限公司 | 一种队列调度方法、装置、网络设备及存储介质 |
-
2020
- 2020-02-28 CN CN202010129367.9A patent/CN113328960B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020136230A1 (en) * | 2000-12-15 | 2002-09-26 | Dell Martin S. | Scheduler for a packet routing and switching system |
US20040037302A1 (en) * | 2002-03-25 | 2004-02-26 | Anujan Varma | Queuing and de-queuing of data with a status cache |
JP2011024027A (ja) * | 2009-07-16 | 2011-02-03 | Fujitsu Ltd | パケット送信制御装置、ハードウェア回路およびプログラム |
US20110170552A1 (en) * | 2010-01-08 | 2011-07-14 | Alaxala Networks Corporation | Packet relay apparatus |
CN103516621A (zh) * | 2012-06-29 | 2014-01-15 | 中兴通讯股份有限公司 | 队列调度的方法和装置 |
US20170012851A1 (en) * | 2015-07-07 | 2017-01-12 | Dell Products L.P. | Microburst monitoring system |
US20180034718A1 (en) * | 2016-07-28 | 2018-02-01 | Cisco Technology, Inc. | Detecting and measuring microbursts in a networking device |
CN107196874A (zh) * | 2017-05-16 | 2017-09-22 | 北京国电通网络技术有限公司 | 一种队列调度算法及系统 |
CN109450816A (zh) * | 2018-11-19 | 2019-03-08 | 迈普通信技术股份有限公司 | 一种队列调度方法、装置、网络设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
朱训;: "基于自相似流量的一种新的队列管理算法" * |
Also Published As
Publication number | Publication date |
---|---|
CN113328960B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109479032B (zh) | 网络设备中的拥塞避免 | |
US6721273B1 (en) | Method and apparatus for traffic flow control in data switches | |
US12101260B1 (en) | Multi-destination traffic handling optimizations in a network device | |
US7751404B2 (en) | Method, system, and computer program product for high performance bonding resequencing | |
US11968129B1 (en) | Delay-based tagging in a network switch | |
EP4175232A1 (en) | Congestion control method and device | |
EP2830269B1 (en) | Message processing method and device | |
CN109479031B (zh) | 用于在网络设备中处理分组的方法和装置 | |
US7792131B1 (en) | Queue sharing with fair rate guarantee | |
US8306045B2 (en) | Packet forwarding apparatus and method for discarding packets | |
US9112708B1 (en) | Processing multicast packets in a network device | |
US8737227B2 (en) | Packet transmission device, memory control circuit, and packet transmission method | |
CN110086728B (zh) | 发送报文的方法、第一网络设备及计算机可读存储介质 | |
US10701002B1 (en) | System and method for memory deallocation | |
CN114070798B (zh) | 一种报文传输方法、装置及设备 | |
CN113626221B (zh) | 一种消息入队方法及装置 | |
CN109905331B (zh) | 队列调度方法及装置、通信设备、存储介质 | |
US10764198B2 (en) | Method to limit packet fetching with uncertain packet sizes to control line rate | |
US20120051372A1 (en) | Shaping apparatus and method | |
CN112491736B (zh) | 一种拥塞控制方法、装置、电子设备及存储介质 | |
WO2022174444A1 (zh) | 一种数据流传输方法、装置及网络设备 | |
US20060187963A1 (en) | Method for sharing single data buffer by several packets | |
CN113328960B (zh) | 一种队列缓存管理方法、装置、存储介质及设备 | |
US20230216805A1 (en) | Method of Managing Data Transmission for Ensuring Per-Flow Fair Bandwidth Sharing | |
CN116827884A (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 |