WO2017219993A1 - 报文调度 - Google Patents
报文调度 Download PDFInfo
- Publication number
- WO2017219993A1 WO2017219993A1 PCT/CN2017/089469 CN2017089469W WO2017219993A1 WO 2017219993 A1 WO2017219993 A1 WO 2017219993A1 CN 2017089469 W CN2017089469 W CN 2017089469W WO 2017219993 A1 WO2017219993 A1 WO 2017219993A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- queue
- dequeued
- packet
- needs
- packets
- Prior art date
Links
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/10—Flow control; Congestion control
-
- 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/622—Queue service order
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本公开提供一种报文调度方法及网络设备。根据该方法的示例,在接收到入队请求消息之后,可将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存需要入队的报文,并将该队列对应的报文数更新为该报文数的当前值与需要入队的报文的数量之和。可从对应的报文数不为0的一组队列中选择需要调度的第一队列,将第一队列对应的报文数减1。在需要出队的报文从第一队列中出队成功的情况下,可从第一队列中删除该需要出队的报文的相关信息。
Description
相关申请的交叉引用
本专利申请要求于2016年6月22日提交的、申请号为201610462810.8、发明名称为“报文调度方法及装置”的中国专利申请的优先权,该申请的全文以引用的方式并入本文中。
在流量管理过程中,可根据优先级对报文进行调度。报文调度的结构中主要包括:若干具有不同优先级的队列、调度模块和一些相关处理模块。
图1是本公开一示例示出的报文调度结构的示意图。
图2是本公开一示例示出的报文调度方法的流程图。
图3是本公开一示例示出的报文调度过程中各个模块的处理时间显示图。
图4是本公开一示例示出的报文调度方法所应用的网络设备的硬件结构示意图。
图5是本公开一示例示出的网络设备的一种结构示意图。
图6是本公开一示例示出的网络设备的另一种结构示意图。
这里将结合附图详细地对示例性示例进行说明。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性示例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
现有技术的报文调度方法中,调度模块的调度性能较低,为了解决该问题,本公开以下示例中提供了一种报文调度方法,以及一种可以应用该方法的网络设备。
如图1所示,本公开示例的报文调度结构中包括:若干具有不同优先级的队列、每一个队列对应的计数器101A-101B、调度模块102、队列管理模块103、发送处理模块104和消息缓冲模块105。其中,计数器用于记录对应队列中缓存的报文的数量,这里,实际缓存的内容为报文的相关信息。该计数器的计数值以报文的个数为单位,初始化时,计数器的计数值为0。
其中,上述调度模块、队列管理模块、发送处理模块和消息缓冲模块可以设置在ASIC(Application Specific Integrated Circuit,专用集成电路)芯片、FPGA(Field Programmable Gate Array,即现场可编程门阵列)芯片、或者CPU(Central Processing Unit,中央处理单元)中;队列可以理解为由一组缓存组成,这些缓存的存储空间一般是固定大小的,每一个缓存中存储一个报文的相关信息,上述队列可以设置在DRAM(Dynamic Random Access Memory,动态随机存取存储器)中;上述计数器可以设置在上述ASIC芯片、FPGA芯片、或CPU中,也可以设置在SRAM(Static Random Access Memory,静态随机存取存储器)中。
另外,由于队列一般保存在DRAM中,而DRAM的读取具有很大的延迟,频繁读取DRAM会造成带宽的浪费。并且,调度模块并不关心队列中保存的具体内容,而只关心队列的状态是空还是非空。基于此,如图1所示,上述调度结构中可通过调度表来记录每一个队列的状态。例如,该调度表中可包含有多个比特位,每一个比特位对应一个队列。当比特位为1时,用于指示对应的队列的状态为非空;当比特位为0时,用于指示对应的队列的状态为空。初始化时,调度表中每一个队列的状态为空。调度模块只需查询该调度表即可获知各个队列的状态。
如图2所示,本公开示例的报文调度方法可包括以下步骤。
在步骤S201,在接收到入队请求消息之后,可将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存需要入队的报文,并将该队列对应的报文数更新为该报文数的当前值与需要入队的报文的数量之和。
其中,入队请求消息中携带需要入队的报文、这些报文的相关信息、以及对应的队列的QID(Queue Identifier,队列标识)。队列管理模块103接收到该入队请求消息之后,可将需要入队的报文的相关信息存放到对应的队列中,将需要入队的报文缓存到DRAM中,并将该队列对应的计数器的计数值加上M,其中,M表示需要入队的报文的数量。上述相关信息中可以包括报文的长度、以及报文缓存的存储地址等。
例如,当与要入队的报文对应的队列为图1中的队列A时,将计数器101A的计数值加
M。
若调度表中记录的队列的状态为空,则在步骤S201中,队列管理模块103在将需要入队的报文的相关信息存放到该队列中之后,队列管理模块103可将该队列的状态更新为非空。
在步骤S202,从对应的报文数不为0的一组队列中选择需要调度的队列(为了描述方便,称为第一队列),将第一队列对应的报文数减1;
例如,调度模块102根据调度表中记录的每一个队列的状态和每一个队列对应的计数器的计数值(该计数值即为报文数),能够确定出状态为非空、并且对应的报文数不为0的所有队列。然后,调度模块102可按照优先级顺序,从这些队列中选择需要调度的第一队列,将第一队列的QID发送给发送处理模块104,并将第一队列对应的计数器的计数值减1。显然,调度模块102还可以使用其它的调度方法来选择需要调度的队列,本公开对此不做限定。
在实际实施过程中,调度模块102判断每一个队列的报文数是否为0的方法可以采用以下两种方法中的任一种方法:
方法一、
调度模块102可向每一个计数器获取该计数器的计数值。在该计数器的计数值不为0时,调度模块102可判断出该计数器对应的队列的报文数不为0。在该计数器的计数值为0时,调度模块102可判断出该计数器对应的队列的报文数为0。
方法二、
每一个计数器在计数值发生变化时可向调度模块102发送用于指示该计数器的计数值是否为0的指示标记。例如,该指示标记为0时,用于指示该计数器的计数值为0,该指示标记为1时,用于指示该计数器的计数值不为0。
调度模块102在接收到计数器发来的用于指示该计数器的计数值不为0的指示标记时,可判断出该计数器对应的队列的报文数不为0。调度模块102在接收到该计数器发来的用于指示该计数器的计数值为0的指示标记时,可判断出该计数器对应的队列的报文数为0。
调度模块102在执行上述步骤S202时,可以根据通过上述方法一或方法二的得到的判断结果来进行调度。
在步骤S203,可从第一队列中获取需要出队的一个报文的相关信息。
例如,发送处理模块104接收到调度模块102发来的第一队列的QID之后,从第一队列的前端获取一个报文的相关信息,该报文即为需要出队的报文。
在步骤S204,可判断该需要出队的报文是否允许出队,若是,则执行步骤S205,否则,执行步骤S207;
在实际实施过程中,上述调度结构中还可以通过令牌桶表来记录每一个队列对应的令牌桶,令牌桶用于指示队列的速率,例如,速率为10M Bytes/s。发送处理模块104可以根据步骤S203中获取的相关信息中包含的报文长度,来判断该报文长度是否大于第一队列对应的令牌桶中剩余的令牌的大小,若不大于,则判断出允许该报文出队,并将该令牌桶中剩余的令牌的大小减去该报文的长度,否则,判断出该报文不允许出队。
显然,发送处理模块104还可以依据其它信息来判断该需要出队的报文是否允许出队,例如,GTS(Generic Traffic Shaping,通用流量整形)或出口拥塞等,本公开示例对此不做限定。
在步骤S205,可根据获取的相关信息读取到该需要出队的报文后,发出用于指示该需要出队的报文从第一队列中出队成功的第一出队消息。
其中,第一出队消息中携带第一队列的QID。
例如,发送处理模块104可根据获取的相关信息,从DRAM中读取到该需要出队的报文后,会将该报文发送出去,另外,还可以对该报文进行GTS等处理。发送处理模块104可将第一出队消息发送给消息缓冲模块105,由消息缓冲模块105缓存第一出队消息,以使队列管理模块103可从消息缓冲模块105中获取第一出队消息。当消息缓冲模块105中缓存有多个出队消息时,队列管理模块103会依次获取各个出队消息。
在步骤S206,接收到第一出队消息之后,可从第一队列中删除该需要出队的报文的相关信息,并在判断出第一队列为空时,将记录的第一队列的状态更新为空;
例如,队列管理模块103可从第一队列的前端删除需要出队的报文的相关信息。然后,可根据第一队列的头位置和尾位置,判断第一队列是否为空。若为空,则可将调度表中记录的第一队列的状态更新为空。
在步骤S207,可丢弃获取的相关信息,发出用于指示该需要出队的报文从第一队列中出队失败的第二出队消息。
其中,第二出队消息中携带有第一队列的QID。
例如,发送处理模块104可将第二出队消息发送给消息缓冲模块105,由消息缓冲模块105缓存第二出队消息,以使队列管理模块103可从消息缓冲模块105中获取第二出队消息。
当消息缓冲模块105中缓存有多个出队消息时,队列管理模块103会依次获取各个出队消息。
在步骤S208,接收到第二出队消息之后,可将第一队列对应的报文数加1。
本公开示例的方法中,会记录每一个队列对应的报文数。在接收到入队请求报文之后,会将与该报文对应的队列的报文数加上需要入队的报文的数量。从而,在有报文入队时,可实时对队列的报文数进行增加。从对应的报文数不为0的队列中选择需要调度的队列,并将该要调度的队列对应的报文数减1、从而,在有报文出队时,实时对队列的报文数进行减少,实现了在报文调度过程中,对队列的报文数的实时更新。
使用上述方法,在每次对报文进行调度时,仅对报文数不为0的队列进行调度,在调度后会将被调度队列对应的报文数减1直至减为0。这样,在对高优先级的队列进行调度之后,以及将记录的该队列的状态更新为空之前的这段时间内,虽然尚未将记录的该队列的状态更新为空,但是在该队列对应的报文数减为0之后,就不会再对该队列进行调度。这样,在高优先级队列的队列深度很浅的情况下,有效减少了无效调度的次数,提高了调度模块的调度性能。
另外,在需要出队的报文出队失败时,会发出用于指示该报文从对应队列中出队失败的出队消息。根据该出队失败的出队消息,会将对应队列的报文数加1,从而实现了对由于报文出队失败所引起的报文数的误差的修正。
例如,发送处理模块104在报文出队失败时,会发出用于指示需要出队的报文从对应队列中出队失败的出队消息。队列管理模块103根据该出队失败的出队消息,会将对应队列的报文数加1,从而实现了对由于报文出队失败所引起的报文数的误差的修正。
下面举一个实际的例子进行说明。如图3所示,在0时刻,队列A中存放有5个报文的相关信息,对应于队列A的计数器A的计数值为5。
调度模块102发现调度表中记录的队列A的状态为非空,且计数器101A的计数值不为0。调度模块102可按照优先级由高到低的顺序,开始对队列A进行调度。经过Ts时间后,在a时刻输出首个QID,即,队列A的QID,并在其后每隔Ts时间输出一个队列A的QID,一共输出5次队列A的QID,此时计数器101A的计数值为0。调度模块102不再对队列A进行调度。
在b时刻,发送处理模块104接收到了首个队列A的QID,并开始执行报文出队处理。经过TI时间后,在c时刻,开始陆续输出出队消息给消息缓冲模块105。假设前3次出队成
功,后2次出队失败,即,先输出3个用于指示出队成功的出队消息,再输出2个用于指示出队失败的出队消息。
经过TII时间后,在d时刻,队列管理模块103开始从消息缓冲模块105中获取出队消息。
由于前3个出队消息都用于指示出队成功,因此队列管理模块103只会从队列A删除报文的相关信息,不会对计数器101A的计数值进行更新;第4个出队消息用于指示出队失败,则队列管理模块103在e时刻开始根据该第4个出队消息对计数器101A进行更新,经过TIII时间后,在f时刻将计数器101A的计数值更新为1。
调度模块102发现调度表中记录的队列A的状态仍然为非空,且计数器101A的计数值不为0,则再次开始调度队列A,并在g时刻输出一个队列A的QID,并将计数器A的计数值减为0。
第5个出队消息也用于指示出队失败,则队列管理模块103可将计数器101A的计数值加1,调度模块102可再次对队列A进行调度,从而在g时刻,计数器101A的计数值再次减为0。
后2次调度的报文正常出队后,用于指示正常出队的出队消息可被反馈给队列管理模块103。队列管理模块103从队列A中删除相应报文的相关信息后,发现队列A为空,则可将调度表中记录的队列A的状态更新为空。
由图3可以看出,计数器101A的计数值为0的时间较长,在本公开例中,调度模块102在这段时间内可以不再调度队列A,而可以调度其它队列。
与前述报文调度方法的示例相对应,本公开还提供了网络设备的示例。
本公开报文调度方法的示例可以应用在用于对数据流进行管理的网络设备上。该网络设备的示例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过处理器10将机器可读存储介质30中对应报文调度控制逻辑40的机器可执行指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本公开的网络设备的一种硬件结构图,除了图4所示的处理器10、内部总线20、以及机器可读存储介质30之外,通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。
本文中提到的机器可读存储介质30可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储
驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
请参考图5,从功能上划分,本公开示例的报文调度控制逻辑40中包括:队列管理模块501和调度模块502。
队列管理模块501,用于在接收到入队请求消息之后,将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存该需要入队的报文,并将该队列对应的报文数更新为该报文数的当前值与该需要入队的报文的数量之和;还用于若该需要出队的报文从第一队列中出队成功,从第一队列中删除该需要出队的报文的相关信息;
调度模块502,用于从对应的报文数不为0的一组队列中选择需要调度的第一队列,将第一队列对应的报文数减1。
在一个示例中,在调度模块502选择出需要调度的第一队列之后,可输出第一队列的QID。
其中,队列管理模块501还用于若需要出队的报文从第一队列中出队失败,则将第一队列对应的报文数加1。
另外,如图5所示,该报文调度控制逻辑40中还包括:每一个队列对应的计数器503,计数器503用于记录队列对应的报文数。调度模块502可判断每一个队列对应的报文数是否为0。
在另一示例中,调度模块502可获取一个队列对应的用于记录报文数的计数器的计数值。在该计数器的计数值不为0时,判断出该计数器对应的队列的报文数不为0,在该计数器的计数值为0时,判断出该计数器对应的队列的报文数为0。
在又一示例中,调度模块502可请求计数器报告该计数器的计数值;或者在计数器的计数值发生变化时,可接收到来自该计数器的用于指示该计数器的计数值是否为0的指示标记。在该指示标记指示计数器的数值不为0时,可判断出该计数器对应的队列的报文数不为0。在该指示标记指示该计数器的计数值为0时,可判断出该计数器对应的队列的报文数为0。
其中,队列管理模块501,还用于如果队列在该需要入队的报文的相关信息被存放到该队列之前为空,则将该队列的状态更新为非空;还用于如果第一队列在从该第一队列中删除该需要出队的报文的相关信息之后为空,则将第一队列的状态更新为空;
调度模块502具体用于根据每一个队列的状态、报文数、以及优先级顺序,从状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
另外,如图5所示,该报文调度控制逻辑40中还包括:发送处理模块504。
发送处理模块504,用于在调度模块502选择出需要调度的第一队列之后,从第一队列中获取需要出队的一个报文的相关信息,判断该需要出队的报文是否允许出队。若判断出该需要出队的报文允许出队,发送处理模块504可根据从第一队列中获取的该需要出队的报文的相关信息,读取该需要出队的报文。若判断出该需要出队的报文不允许出队,则发送处理模块504可丢弃获取的该需要出队的报文的相关信息。
在又一实施例中,调度模块502选择出需要调度的第一队列之后,可输出第一队列的QID给发送处理模块504,发送处理模块504可根据第一队列的QID,从第一队列中读取需要出队的一个报文的相关信息,并进一步判断该需要出队的报文是否允许出队以及根据判断结果进行后续操作。
在实施过程中,如图5所示,可以通过调度表来记录每一个队列的状态。另外,如图6所示,在该报文调度控制逻辑40中还可以包括消息缓冲模块505,用于缓存发送处理模块504发出的出队消息,以便队列管理模块501从消息缓冲模块505中获取各个出队消息。
在本公开的一示例中,还提供了一种网络设备,包括:处理器;存储有机器可执行指令的机器可读存储介质,其中,通过执行所述机器可执行指令,所述处理器被使得:在接收到入队请求消息之后,将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存所述需要入队的报文,并将所述队列对应的报文数更新为当前值与所述需要入队的报文的数量之和;从对应的报文数不为0的一组队列中选择需要调度的第一队列;将所述第一队列对应的报文数减1;在需要出队的报文从所述第一队列中出队成功的情况下,从所述第一队列中删除所述需要出队的报文的相关信息。
在另一示例中,所述处理器还被所述机器可执行指令促使:在所述需要出队的报文从所述第一队列中出队失败的情况下,将所述第一队列对应的报文数加1。
在另一示例中,所述处理器还被所述机器可执行指令促使:获取一个队列对应的用于记录报文数的计数器的计数值;在该计数器的计数值不为0时,判断出该队列对应的报文数不为0,在该计数器的计数值为0时,判断出该队列对应的报文数为0。
在另一示例中,其中,在获取每一个队列对应的计数器的计数值时,所述处理器还被所述机器可执行指令促使:请求计数器报告该计数器的计数值;或者,在计数器的计数值改变时,接收来自该计数器的用于指示该计数器的计数值是否为0的指示标记。
在另一示例中,其中,所述处理器还被所述机器可执行指令促使:如果队列在所述需要
入队的报文的相关信息存放到所述队列中之前为空,将所述队列的状态更新为非空;如果所述第一队列在从所述第一队列中删除所述需要出队的报文的相关信息之后,则将所述第一队列的状态更新为空;在从对应的报文数不为0的一组队列中选择需要调度的第一队列时,根据每一个队列的状态、报文数及优先级顺序,从状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
在另一示例中,其中,所述处理器还被所述机器可执行指令促使:在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;在判断出所述需要出队的报文允许出队的情况下,根据读取的所述需要出队的报文的相关信息,读取所述需要出队的报文。
在另一示例中,其中,所述处理器还被所述机器可执行指令促使:在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;在判断出所述需要出队的报文不允许出队的情况下,丢弃所述需要出队的报文的相关信息。
对于装置示例而言,由于其基本对应于方法示例,所以相关之处参见方法示例的部分说明即可。以上所描述的装置示例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开的示例中还提供了一种机器可读存储介质,其存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:在接收到入队请求消息之后,网络设备将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存所述需要入队的报文,并将所述队列对应的报文数更新为该报文数的当前值与所述需要入队的报文的数量之和;所述网络设备从对应的报文数不为0的一组队列中选择需要调度的第一队列;所述网络设备将所述第一队列对应的报文数减1;所述网络设备在需要出队的报文从所述第一队列中出队成功的情况下,从所述第一队列中删除所述需要出队的报文的相关信息。
在另一示例中,所述机器可执行指令还促使所述处理器:在所述需要出队的报文从所述第一队列中出队失败的情况下,将所述第一队列对应的报文数加1。
在另一示例中,所述机器可执行指令还促使所述处理器:获取一个队列对应的用于记录报文数的计数器的计数值;在该计数器的计数值不为0时,判断出该队列对应的报文数不为
0;在该计数器的计数值为0时,判断出该队列对应的报文数为0。
在另一示例中,所述机器可执行指令还促使所述处理器:向计数器请求该计数器的计数值;或者,在计数器的计数值改变时,接收来自该计数器的用于指示该计数器的计数值是否为0的指示标记。
在另一示例中,所述机器可执行指令还促使所述处理器:在将所述需要入队的报文的相关信息存放到所述队列中之前如果所述队列为空,则在将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列时,将该队列的状态更新为非空;在从所述第一队列中删除所述需要出队的报文的相关信息之后,如果所述第一队列为空,则将所述第一队列的状态更新为空。
在另一示例中,在从对应的报文数不为0的一组队列中选择需要调度的第一队列时,所述机器可执行指令还促使所述处理器:根据每一个队列的状态、报文数及优先级顺序,从状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
在另一示例中,所述机器可执行指令还促使所述处理器:在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;在判断出所述需要出队的报文允许出队的情况下,根据获取的所述需要出队的报文的相关信息,读取所述需要出队的报文。
在另一示例中,所述机器可执行指令还促使所述处理器:在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;所述网络设备在判断出所述需要出队的报文不允许出队的情况下,丢弃获取的所述需要出队的报文的相关信息。
在本公开使用的术语是仅仅出于描述特定示例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本公开的较佳示例而已,并不用以限制本公开,凡在本公开的精神和原则
之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
Claims (15)
- 一种报文调度方法,包括:在接收到入队请求消息之后,网络设备将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存所述需要入队的报文,并将所述队列对应的报文数更新为该报文数的当前值与所述需要入队的报文的数量之和;所述网络设备从对应的报文数不为0的一组队列中选择需要调度的第一队列;所述网络设备将所述第一队列对应的报文数减1;所述网络设备在需要出队的报文从所述第一队列中出队成功的情况下,从所述第一队列中删除所述需要出队的报文的相关信息。
- 根据权利要求1所述的方法,还包括:所述网络设备在所述需要出队的报文从所述第一队列中出队失败的情况下,将所述第一队列对应的报文数加1。
- 根据权利要求1所述的方法,还包括:所述网络设备获取一个队列对应的用于记录报文数的计数器的计数值;所述网络设备在该计数器的计数值不为0时,判断出该队列对应的报文数不为0,所述网络设备在该计数器的计数值为0时,判断出该队列对应的报文数为0。
- 根据权利要求3所述的方法,其中,获取一个队列对应的用于记录报文数的计数器的计数值,包括:所述网络设备向计数器请求该计数器的计数值;或者,在计数器的计数值改变时,所述网络设备接收来自该计数器的用于指示该计数器的计数值是否为0的指示标记。
- 根据权利要求1所述的方法,该方法还包括:在将所述需要入队的报文的相关信息存放到所述队列中之前如果所述队列为空,则所述网络设备在将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列时,将该队列的状态更新为非空;在从所述第一队列中删除所述需要出队的报文的相关信息之后,如果所述第一队列为空,则所述网络设备将所述第一队列的状态更新为空。
- 根据权利要求1所述的方法,其中,所述从对应的报文数不为0的一组队列中选择需要调度的第一队列,包括:所述网络设备根据每一个队列的状态、报文数及优先级顺序,从状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
- 根据权利要求1所述的方法,其中,还包括:所述网络设备在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;所述网络设备在判断出所述需要出队的报文允许出队的情况下,根据获取的所述需要出队的报文的相关信息,读取所述需要出队的报文。
- 根据权利要求2所述的方法,其中,还包括:所述网络设备在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;所述网络设备在判断出所述需要出队的报文不允许出队的情况下,丢弃获取的所述需要出队的报文的相关信息。
- 一种网络设备,包括:处理器;存储有机器可执行指令的机器可读存储介质,其中,通过执行所述机器可执行指令,所述处理器被使得:在接收到入队请求消息之后,将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列中,缓存所述需要入队的报文,并将所述队列对应的报文数更新为该报文数的当前值与所述需要入队的报文的数量之和;从对应的报文数不为0的一组队列中选择需要调度的第一队列;将所述第一队列对应的报文数减1;在需要出队的报文从所述第一队列中出队成功的情况下,从所述第一队列中删除所述需要出队的报文的相关信息。
- 根据权利要求9所述的网络设备,其中,所述处理器被所述机器可执行指令促使:在所述需要出队的报文从所述第一队列中出队失败的情况下,将所述第一队列对应的报文数加1。
- 根据权利要求9所述的网络设备,其中,所述处理器被所述机器可执行指令促使:获取一个队列对应的用于记录报文数的计数器的计数值;在该计数器的计数值不为0时,判断出该队列对应的报文数不为0,在该计数器的计数值为0时,判断出该队列对应的报文数为0。
- 根据权利要求9所述的网络设备,其中,所述处理器被所述机器可执行指令促使:在将需要入队的报文的相关信息存放到所述队列中之前,如果所述队列的状态为空,则在将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列时,将所述队列的状态更新为非空;在从所述第一队列中删除所述需要出队的报文的相关信息之后,如果所述第一队列为空,将所述第一队列的状态更新为空;在从对应的报文数不为0的一组队列中选择需要调度的第一队列时,根据每一个队列的状态、报文数及优先级顺序,从状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
- 根据权利要求9所述的网络设备,其中,所述处理器还被所述机器可执行指令促使:在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;在判断出所述需要出队的报文允许出队的情况下,根据读取的所述需要出队的报文的相关信息,读取所述需要出队的报文。
- 根据权利要求9所述的网络设备,其中,所述处理器还被所述机器可执行指令促使:在从所述第一队列中获取需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;在判断出所述需要出队的报文不允许出队的情况下,丢弃获取的所述需要出队的报文的相关信息。
- 一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器执行如权利要求1所述的报文调度方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610462810.8A CN107528789B (zh) | 2016-06-22 | 2016-06-22 | 报文调度方法及装置 |
CN201610462810.8 | 2016-06-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017219993A1 true WO2017219993A1 (zh) | 2017-12-28 |
Family
ID=60734361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2017/089469 WO2017219993A1 (zh) | 2016-06-22 | 2017-06-22 | 报文调度 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107528789B (zh) |
WO (1) | WO2017219993A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765223A (zh) * | 2021-01-26 | 2021-05-07 | 红云红河烟草(集团)有限责任公司 | 一种基于队列的设备参数数据对齐方法 |
CN114553789A (zh) * | 2022-02-24 | 2022-05-27 | 昆高新芯微电子(江苏)有限公司 | 直通转发模式下TSN Qci流过滤功能的实现方法和系统 |
CN115296900A (zh) * | 2022-08-03 | 2022-11-04 | 北京天融信网络安全技术有限公司 | 一种网络报文修正方法、装置、电子设备及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247942B (zh) * | 2018-03-09 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 一种数据发送方法、装置和可读介质 |
CN108768873B (zh) * | 2018-05-29 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种流量控制方法及相关设备 |
CN109525500B (zh) * | 2018-12-27 | 2021-08-24 | 北京天融信网络安全技术有限公司 | 一种自调整阈值的信息处理方法及信息处理装置 |
CN113872881A (zh) * | 2020-06-30 | 2021-12-31 | 华为技术有限公司 | 队列信息的处理方法及装置 |
CN113179226B (zh) * | 2021-03-31 | 2022-03-29 | 新华三信息安全技术有限公司 | 一种队列调度方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001039430A2 (en) * | 1999-11-24 | 2001-05-31 | Leon Garcia Alberto | A high-speed, programmable packet scheduler and buffer manager |
CN101163248A (zh) * | 2007-11-19 | 2008-04-16 | 华为技术有限公司 | 一种码流调度方法、装置和系统 |
CN101179487A (zh) * | 2006-11-10 | 2008-05-14 | 中兴通讯股份有限公司 | 一种计算机网络数据包转发的队列管理方法 |
CN102387076A (zh) * | 2011-10-19 | 2012-03-21 | 烽火通信科技股份有限公司 | 一种结合整形的分级式队列调度方法 |
CN105099947A (zh) * | 2014-09-25 | 2015-11-25 | 航天恒星科技有限公司 | 空间网络接入方法及装置 |
-
2016
- 2016-06-22 CN CN201610462810.8A patent/CN107528789B/zh active Active
-
2017
- 2017-06-22 WO PCT/CN2017/089469 patent/WO2017219993A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001039430A2 (en) * | 1999-11-24 | 2001-05-31 | Leon Garcia Alberto | A high-speed, programmable packet scheduler and buffer manager |
CN101179487A (zh) * | 2006-11-10 | 2008-05-14 | 中兴通讯股份有限公司 | 一种计算机网络数据包转发的队列管理方法 |
CN101163248A (zh) * | 2007-11-19 | 2008-04-16 | 华为技术有限公司 | 一种码流调度方法、装置和系统 |
CN102387076A (zh) * | 2011-10-19 | 2012-03-21 | 烽火通信科技股份有限公司 | 一种结合整形的分级式队列调度方法 |
CN105099947A (zh) * | 2014-09-25 | 2015-11-25 | 航天恒星科技有限公司 | 空间网络接入方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765223A (zh) * | 2021-01-26 | 2021-05-07 | 红云红河烟草(集团)有限责任公司 | 一种基于队列的设备参数数据对齐方法 |
CN112765223B (zh) * | 2021-01-26 | 2023-07-14 | 红云红河烟草(集团)有限责任公司 | 一种基于队列的设备参数数据对齐方法 |
CN114553789A (zh) * | 2022-02-24 | 2022-05-27 | 昆高新芯微电子(江苏)有限公司 | 直通转发模式下TSN Qci流过滤功能的实现方法和系统 |
CN114553789B (zh) * | 2022-02-24 | 2023-12-12 | 昆高新芯微电子(江苏)有限公司 | 直通转发模式下TSN Qci流过滤功能的实现方法和系统 |
CN115296900A (zh) * | 2022-08-03 | 2022-11-04 | 北京天融信网络安全技术有限公司 | 一种网络报文修正方法、装置、电子设备及存储介质 |
CN115296900B (zh) * | 2022-08-03 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种网络报文修正方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107528789A (zh) | 2017-12-29 |
CN107528789B (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017219993A1 (zh) | 报文调度 | |
JP5514913B2 (ja) | フローアウェアネットワークノード内でデータパケットを処理するための方法 | |
US8788591B2 (en) | Asynchronous mechanism and message pool | |
US11929931B2 (en) | Packet buffer spill-over in network devices | |
US20190173809A1 (en) | Packet descriptor storage in packet memory with cache | |
WO2018107681A1 (zh) | 一种队列操作中的处理方法、装置及计算机存储介质 | |
US7327674B2 (en) | Prefetching techniques for network interfaces | |
US9769092B2 (en) | Packet buffer comprising a data section and a data description section | |
US20150006770A1 (en) | Low Latency First-In-First-Out (FIFO) Buffer | |
US10419370B2 (en) | Hierarchical packet buffer system | |
WO2022016889A1 (zh) | 一种拥塞控制方法和装置 | |
US20200259766A1 (en) | Packet processing | |
US6982986B2 (en) | QoS scheduler and method for implementing quality of service anticipating the end of a chain of flows | |
US10177997B1 (en) | Method and apparatus for packet and byte counting | |
US7046676B2 (en) | QoS scheduler and method for implementing quality of service with cached status array | |
EP2526478B1 (en) | A packet buffer comprising a data section an a data description section | |
WO2011015055A1 (zh) | 一种存储管理的方法和系统 | |
US20170017404A1 (en) | System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices | |
WO2020168563A1 (zh) | 一种存储器的管理方法及装置 | |
US6973036B2 (en) | QoS scheduler and method for implementing peak service distance using next peak service time violated indication | |
TWI223747B (en) | Increasing memory access efficiency for packet applications | |
US7103051B2 (en) | QoS scheduler and method for implementing quality of service with aging time stamps | |
US6687256B2 (en) | Recoverable cut-through buffer and method | |
US20030223447A1 (en) | Method and system to synchronize a multi-level memory | |
CN114766090A (zh) | 一种报文缓存方法、集成电路系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17814731 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 17814731 Country of ref document: EP Kind code of ref document: A1 |