CN107528789B - 报文调度方法及装置 - Google Patents
报文调度方法及装置 Download PDFInfo
- Publication number
- CN107528789B CN107528789B CN201610462810.8A CN201610462810A CN107528789B CN 107528789 B CN107528789 B CN 107528789B CN 201610462810 A CN201610462810 A CN 201610462810A CN 107528789 B CN107528789 B CN 107528789B
- Authority
- CN
- China
- Prior art keywords
- queue
- message
- messages
- counter
- needing
- 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
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
技术领域
本申请涉及网络通信技术领域,特别涉及一种报文调度方法及装置。
背景技术
在流量管理过程中,通常根据优先级对报文进行调度。报文调度的结构中主要包括:若干具有不同优先级的队列、调度模块和一些相关处理模块。
发明内容
有鉴于此,本申请提供一种报文调度方法及装置。
具体地,本申请是通过如下技术方案实现的:
一方面,提供了一种报文调度方法,该方法包括:
在接收到入队请求消息之后,将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中,缓存该需要入队的报文,并将第一队列对应的报文数更新为当前值与该需要入队的报文的数量之和;
从对应的报文数不为0的队列中选择需要调度的第一队列,将第一队列对应的报文数减1;
若接收到用于指示该需要出队的报文从第一队列中出队成功的第一出队消息,则从第一队列中删除该需要出队的报文的相关信息。
另一方面,还提供了一种报文调度装置,该装置包括:
队列管理模块,用于在接收到入队请求消息之后,将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中,缓存该需要入队的报文,并将第一队列对应的报文数更新为当前值与该需要入队的报文的数量之和;还用于若接收到用于指示该需要出队的报文从第一队列中出队成功的第一出队消息,从第一队列中删除该需要出队的报文的相关信息;
调度模块,用于从对应的报文数不为0的队列中选择需要调度的第一队列,将第一队列对应的报文数减1。
通过本申请的以上技术方案,会记录每一个队列对应的报文数,在接收到入队请求报文之后,会将对应的第一队列对应的报文数加上需要入队的报文的数量,从而,在有报文入队时,实时对队列的报文数进行增加;从对应的报文数不为0的队列中选择需要调度的第一队列,并将第一队列对应的报文数减1,从而,在有报文出队时,实时对队列的报文数进行减少,实现了在报文调度过程中,对队列的报文数的实时更新。
使用上述方法,在每次对报文进行调度时,仅对报文数不为0的队列进行调度,在调度后会将对应的报文数减1直至减为0,这样,在对高优先级的队列进行调度之后,以及将记录的该队列的队列状态更新为空之前的这段时间内,虽然尚未将记录的该队列的队列状态更新为空,但是在该队列对应的报文数减为0之后,就不会再对该队列进行调度,从而在高优先级队列的队列深度很浅的情况下,有效减少了无效调度的次数,提高了调度模块的调度性能。
附图说明
图1是本申请一示例性实施例示出的报文调度结构的示意图;
图2是本申请一示例性实施例示出的报文调度方法的流程图;
图3是本申请一示例性实施例示出的报文调度过程中各个模块的处理时间显示图;
图4是本申请一示例性实施例示出的报文调度装置所应用的网络设备的硬件结构示意图;
图5是本申请一示例性实施例示出的报文调度装置的一种结构示意图;
图6是本申请一示例性实施例示出的报文调度装置的另一种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
现有技术的报文调度方法中,调度模块的调度性能较低,为了解决该问题,本申请以下实施例中提供了一种报文调度方法,以及一种可以应用该方法的报文调度装置。
如图1所示,本申请实施例的调度结构中包括:若干具有不同优先级的队列、每一个队列对应的计数器、调度模块、队列管理模块、发送处理模块和消息缓冲模块。其中,计数器用于记录对应队列中缓存的报文(具体为报文的相关信息)数,该计数器的计数值以报文的个数为单位,初始化时,计数器的计数值为0。
其中,上述调度模块、队列管理模块、发送处理模块和消息缓冲模块可以设置在ASIC(Application Specific Integrated Circuit,专用集成电路)芯片、FPGA(FieldProgrammable Gate Array,即现场可编程门阵列)芯片、或者CPU(Central ProcessingUnit,中央处理单元)中;队列一般由一组缓存组成,这些缓存的存储空间一般是固定大小的,每一个缓存中存储一个报文的相关信息,上述队列可以设置在DRAM(Dynamic RandomAccess Memory,动态随机存取存储器)中;上述计数器可以设置在上述ASIC芯片、FPGA芯片、或CPU中,也可以设置在SRAM(Static Random Access Memory,静态随机存取存储器)中。
另外,由于队列一般保存在DRAM中,而DRAM的读取具有很大的延迟,频繁读取DRAM会造成带宽的浪费,并且,调度模块并不关心队列中保存的具体内容,而只关心队列的队列状态是空还是非空,因此,调度模块一般不会直接到各个队列中去判断队列状态是否为空。基于此,如图1所示,上述调度结构中通过调度表来记录每一个队列的队列状态,具体的,该调度表中包含有多个比特位,每一个比特位对应一个队列,当比特位为1时,用于指示对应的队列的队列状态为非空,当比特位为0时,用于指示对应的队列状态为空。初始化时,调度表中每一个队列的队列状态为空。调度模块只需查询该调度表来获知各个队列的队列状态即可。
如图2所示,本申请实施例的报文调度方法包括以下步骤:
步骤S201,在接收到入队请求消息之后,将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的队列(为了描述方便,称为第一队列)中,缓存需要入队的报文,并将第一队列对应的报文数更新为当前值与需要入队的报文的数量之和;
其中,入队请求消息中携带需要入队的报文、这些报文的相关信息、以及对应的第一队列的QID(Queue Identifier,队列标识),队列管理模块接收到该入队请求报文之后,将需要入队的报文的相关信息存放到第一队列中,将需要入队的报文缓存到DRAM中,并将第一队列对应的计数器的计数值加上M,其中,M表示需要入队的报文的数量。上述相关信息中可以包括报文的长度、以及报文缓存的存储地址等。
例如,当第一队列为图1中的队列A时,将计数器A的计数值加M。
在步骤S201中,队列管理模块在将需要入队的报文的相关信息存放到第一队列中之后,若调度表中记录的第一队列的队列状态为空,则队列管理模块将第一队列的队列状态更新为非空。
步骤S202,从对应的报文数不为0的队列中选择需要调度的队列(为了描述方便,以需要调度的是第一队列为例进行说明),将第一队列对应的报文数减1;
具体的,调度模块根据调度表中记录的每一个队列的队列状态和每一个队列对应的计数器的计数值(该计数值即为报文数),能够确定出队列状态为非空、并且对应的报文数不为0的所有队列,按照优先级,从这些队列中选择需要调度的第一队列,将第一队列的QID发送给发送处理模块,并将第一队列对应的计数器的计数值减1。显然,调度模块还可以使用其它的调度方法来选择需要调度的队列,本申请对此不做限定。
在实际实施过程中,调度模块判断每一个队列的报文数是否为0的方法可以采用以下两种方法中的任一种方法:
方法一、
调度模块向每一个计数器获取该计数器的计数值,在该计数器的计数值不为0时,判断出该计数器对应的队列的报文数不为0,在该计数器的计数值为0时,判断出该计数器对应的队列的报文数为0。
方法二、
每一个计数器在计数值发生变化时向调度模块发送用于指示该计数器的计数值是否为0的指示标记,例如,该指示标记为0时,用于指示该计数器的计数值为0,该指示标记为1时,用于指示该计数器的计数值不为0。
调度模块在接收到计数器发来的用于指示该计数器的计数值不为0的指示标记时,判断出该计数器对应的队列的报文数不为0,在接收到该计数器发来的用于指示该计数器的计数值为0的指示标记时,判断出该计数器对应的队列的报文数为0。
调度模块在执行上述步骤S202时,可以根据通过上述方法一或方法二的得到的判断结果来进行调度。
步骤S203,从第一队列中读取需要出队的一个报文的相关信息;
具体的,发送处理模块接收到调度模块发来的第一队列的QID之后,从第一队列的头部读取一个报文的相关信息,该报文即为需要出队的报文。
步骤S204,判断该需要出队的报文是否允许出队,若是,则执行步骤S205,否则,执行步骤S207;
在实际实施过程中,上述调度结构中还可以通过令牌桶表来记录每一个队列对应的令牌桶,令牌桶用于指示队列的速率,例如,速率为10M;发送处理模块可以根据步骤S203中读取的相关信息中包含的报文长度,来判断该报文长度是否大于第一队列对应的令牌桶中剩余的令牌的大小,若不大于,则判断出允许该报文出队,并将该令牌桶中剩余的令牌的大小减去该报文的长度,否则,判断出该报文不允许出队。
显然,发送处理模块还可以依据其它信息来判断该需要出队的报文是否允许出队,例如,GTS(Generic Traffic Shaping,通用流量整形)或出口拥塞等,本申请实施例对此不做限定。
步骤S205,根据读取的相关信息读取到该需要出队的报文后,发出用于指示该需要出队的报文从第一队列中出队成功的第一出队消息。
其中,第一出队消息中携带第一队列的QID。
具体的,发送处理模块根据读取的相关信息,从DRAM中读取到该需要出队的报文后,会将该报文发送出去,另外,还可以对该报文进行GTS等处理。发送处理模块将第一出队消息发送给消息缓冲模块,由消息缓冲模块缓存第一出队消息,以使队列管理模块从消息缓冲模块中获取第一出队消息。当消息缓冲模块中缓存有多个出队消息时,队列管理模块会依次获取各个出队消息。
步骤S206,接收到第一出队消息之后,从第一队列中删除该需要出队的报文的相关信息,并在判断出第一队列为空时,将记录的第一队列的队列状态更新为空;
具体的,队列管理模块从第一队列的头部删除一个报文的相关信息,根据第一队列的头位置和尾位置,判断第一队列是否为空,若为空,则将调度表中记录的第一队列的队列状态更新为空。
步骤S207,丢弃读取的相关信息,发出用于指示该需要出队的报文从第一队列中出队失败的第二出队消息。
其中,第二出队消息中携带有第一队列的QID。
具体的,发送处理模块将第二出队消息发送给消息缓冲模块,由消息缓冲模块缓存第二出队消息,以使队列管理模块从消息缓冲模块中获取第二出队消息。当消息缓冲模块中缓存有多个出队消息时,队列管理模块会依次获取各个出队消息。
步骤S208,接收到第二出队消息之后,将第一队列对应的报文数加1。
本申请实施例的方法中,会记录每一个队列对应的报文数,在接收到入队请求报文之后,会将对应的第一队列对应的报文数加上需要入队的报文的数量,从而,在有报文入队时,实时对队列的报文数进行增加;从对应的报文数不为0的队列中选择需要调度的第一队列,并将第一队列对应的报文数减1,从而,在有报文出队时,实时对队列的报文数进行减少,实现了在报文调度过程中,对队列的报文数的实时更新。
使用上述方法,在每次对报文进行调度时,仅对报文数不为0的队列进行调度,在调度后会将对应的报文数减1直至减为0,这样,在对高优先级的队列进行调度之后,以及将记录的该队列的队列状态更新为空之前的这段时间内,虽然尚未将记录的该队列的队列状态更新为空,但是在该队列对应的报文数减为0之后,就不会再对该队列进行调度,从而在高优先级队列的队列深度很浅的情况下,有效减少了无效调度的次数,提高了调度模块的调度性能。
另外,由于报文可能会出队失败,因此,在报文出队失败时,会发出用于指示需要出队的报文从对应队列中出队失败的出队消息,根据该出队失败的出队消息,会将对应队列的报文数加1,从而实现了对由于报文出队失败所引起的报文数的误差的修正。
具体的,发送处理模块在报文出队失败时,会发出用于指示需要出队的报文从对应队列中出队失败的出队消息,队列管理模块根据该出队失败的出队消息,会将对应队列的报文数加1,从而实现了对由于报文出队失败所引起的报文数的误差的修正。
下面举一个实际的例子进行说明。如图3所示,在0时刻,队列A中存放有5个报文的相关信息,对应于队列A的计数器A的计数值为5。
调度模块发现调度表中记录的队列A的队列状态为非空,且计数器A的计数值不为0,则按照优先级由高到低的顺序,开始对队列A进行调度,经过Ts时间后,在a时刻输出首个QID,即,队列A的QID,并在其后每隔Ts时间输出一个队列A的QID,一共输出5次队列A的QID,此时计数器A的计数值为0。调度模块不再对队列A进行调度。
在b时刻,发送处理模块接收到了首个队列A的QID,并开始执行报文出队处理。经过TI时间后,在c时刻,开始陆续输出出队消息给消息缓冲模块。假设前3次出队成功,后2次出队失败,即,先输出3个用于指示出队成功的出队消息,再输出2个用于指示出队失败的出队消息。
经过TII时间后,在d时刻,队列管理模块开始从消息缓冲模块中获取出队消息。
由于前3个出队消息都用于指示出队成功,因此队列管理模块只会从队列A的头部删除报文的相关信息,不会对计数器A的计数值进行更新;第4个出队消息用于指示出队失败,则队列管理模块在e时刻开始根据该第4个出队消息对计数器A进行更新,经过TIII时间后,在f时刻将计数器A的计数值更新为1。
调度模块发现调度表中记录的队列A的队列状态仍然为非空,且计数器A的计数值不为0,则再次开始调度队列A,并在g时刻输出一个队列A的QID,并将计数器A的计数值减为0。
第5个出队消息也用于指示出队失败,则队列管理模块将计数器A的计数值加1,调度模块再次对队列A进行调度,从而在g时刻,计数器A的计数值再次减为0。
后2次调度的报文正常出队后,用于指示正常出队的出队消息反馈给队列管理模块后,队列管理模块从队列A中删除相应报文的相关信息后,发现队列A为空,则将调度表中记录的队列A的队列状态更新为空。
由图3可以看出,计数器A的计数值为0的时间较长,在现有技术中调度模块在这段时间内仍然会不断的调度队列A;而在本申请实施例中,调度模块不再调度队列A,而可以调度其它队列。
与前述报文调度方法的实施例相对应,本申请还提供了报文调度装置的实施例。
本申请报文调度装置60的实施例可以应用在用于对数据流进行管理的网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器10将非易失性存储器50中对应的计算机程序指令读取到内存40中运行形成的。从硬件层面而言,如图4所示,为本申请报文调度装置60所在网络设备的一种硬件结构图,除了图4所示的处理器10、内部总线20、网络接口30、内存40、以及非易失性存储器50之外,实施例中装置所在的网络设备通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图5,本申请实施例的报文调度装置60中包括:队列管理模块601和调度模块602,其中:
队列管理模块601,用于在接收到入队请求消息之后,将该入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中,缓存该需要入队的报文,并将第一队列对应的报文数更新为当前值与该需要入队的报文的数量之和;还用于若接收到用于指示该需要出队的报文从第一队列中出队成功的第一出队消息,从第一队列中删除该需要出队的报文的相关信息;
调度模块602,用于从对应的报文数不为0的队列中选择需要调度的第一队列,将第一队列对应的报文数减1。
进一步的,在调度模块602选择出需要调度的第一队列之后,输出第一队列的QID。
其中,队列管理模块601还用于若接收到用于指示需要出队的报文从第一队列中出队失败的第二出队消息,则将第一队列对应的报文数加1。
另外,如图5所示,该报文调度装置60中还包括:每一个队列对应的计数器603,计数器603用于记录队列对应的报文数;则,调度模块602具体用于通过以下步骤判断每一个队列对应的报文数是否为0:
向每一个计数器获取该计数器的计数值,在该计数器的计数值不为0时,判断出该计数器对应的队列的报文数不为0,在该计数器的计数值为0时,判断出该计数器对应的队列的报文数为0;
或者,在接收到任一计数器发来的用于指示该计数器的计数值不为0的指示标记时,判断出该计数器对应的队列的报文数不为0,在接收到该计数器发来的用于指示该计数器的计数值为0的指示标记时,判断出该计数器对应的队列的报文数为0,其中,指示标记是该计数器的计数值发生变化时发出的。
其中,队列管理模块601,还用于在将该入队请求消息中携带的该需要入队的报文的相关信息存放到对应的第一队列中之后,若记录的第一队列的队列状态为空,则将第一队列的队列状态更新为非空;还用于在从第一队列中删除该需要出队的报文的相关信息之后,在判断出第一队列为空时,将记录的第一队列的队列状态更新为空;
调度模块602具体用于根据记录的每一个队列的队列状态、以及每一个队列对应的报文数,按照优先级,从队列状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
另外,如图5所示,该报文调度装置60中还包括:发送处理模块604,其中:
发送处理模块604,用于在调度模块602选择出需要调度的第一队列之后,从第一队列中读取需要出队的一个报文的相关信息,判断该需要出队的报文是否允许出队;还用于若判断出该需要出队的报文允许出队,则根据从第一队列中读取的该需要出队的报文的相关信息,读取该需要出队的报文,并发出第一出队消息给队列管理模块601,若判断出该需要出队的报文不允许出队,则丢弃该需要出队的报文的相关信息,发出第二出队消息给队列管理模块601。
进一步的,调度模块602选择出需要调度的第一队列之后,输出第一队列的QID给发送处理模块604,发送处理模块604根据第一队列的QID,从第一队列中读取需要出队的一个报文的相关信息,并进一步判断该需要出队的报文是否允许出队以及根据判断结果进行后续操作。
在实际实施过程中,如图5所示,可以通过调度表来记录每一个队列的队列状态。另外,如图6所示,在该报文调度装置60中还可以包括消息缓冲模块605,用于缓存发送处理模块604发出的出队消息,以便队列管理模块601从消息缓冲模块605中获取各个出队消息。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种报文调度方法,其特征在于,所述方法包括:
在接收到入队请求消息之后,将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中,缓存所述需要入队的报文,并将所述第一队列对应的报文数更新为当前值与所述需要入队的报文的数量之和;
从对应的报文数不为0的队列中选择需要调度的第一队列,将所述第一队列对应的报文数减1;
若接收到用于指示需要出队的报文从所述第一队列中出队成功的第一出队消息,则从所述第一队列中删除所述需要出队的报文的相关信息。
2.根据权利要求1所述的方法,其特征在于,还包括:
若接收到用于指示所述需要出队的报文从所述第一队列中出队失败的第二出队消息,则将所述第一队列对应的报文数加1。
3.根据权利要求1或2所述的方法,其特征在于,队列对应的报文数由计数器记录,则,判断每一个队列对应的报文数是否为0的方法包括:
向每一个计数器获取该计数器的计数值,在该计数器的计数值不为0时,判断出该计数器对应的队列的报文数不为0,在该计数器的计数值为0时,判断出该计数器对应的队列的报文数为0;
或者,在接收到任一计数器发来的用于指示该计数器的计数值不为0的指示标记时,判断出该计数器对应的队列的报文数不为0,在接收到该计数器发来的用于指示该计数器的计数值为0的指示标记时,判断出该计数器对应的队列的报文数为0,其中,所述指示标记是该计数器的计数值发生变化时发出的。
4.根据权利要求1或2所述的方法,其特征在于,在将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中之后,还包括:若记录的所述第一队列的队列状态为空,则将所述第一队列的队列状态更新为非空;
所述从对应的报文数不为0的队列中选择需要调度的第一队列,包括:根据记录的每一个队列的队列状态、以及每一个队列对应的报文数,按照优先级,从队列状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列;
在从所述第一队列中删除所述需要出队的报文的相关信息之后,还包括:在判断出所述第一队列为空时,将记录的所述第一队列的队列状态更新为空。
5.根据权利要求1或2所述的方法,其特征在于,在接收到出队消息之前,还包括:
在从所述第一队列中读取所述需要出队的报文的相关信息之后,判断所述需要出队的报文是否允许出队;
若判断出所述需要出队的报文允许出队,则根据读取的所述需要出队的报文的相关信息,读取所述需要出队的报文,并发出所述第一出队消息;
若判断出所述需要出队的报文不允许出队,则丢弃所述需要出队的报文的相关信息,发出第二出队消息。
6.一种报文调度装置,其特征在于,所述装置包括:
队列管理模块,用于在接收到入队请求消息之后,将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中,缓存所述需要入队的报文,并将所述第一队列对应的报文数更新为当前值与所述需要入队的报文的数量之和;还用于若接收到用于指示需要出队的报文从所述第一队列中出队成功的第一出队消息,从所述第一队列中删除所述需要出队的报文的相关信息;
调度模块,用于从对应的报文数不为0的队列中选择需要调度的第一队列,将所述第一队列对应的报文数减1。
7.根据权利要求6所述的装置,其特征在于,
所述队列管理模块,还用于若接收到用于指示所述需要出队的报文从所述第一队列中出队失败的第二出队消息,则将所述第一队列对应的报文数加1。
8.根据权利要求6或7所述的装置,其特征在于,还包括:每一个队列对应的计数器,所述计数器用于记录队列对应的报文数;则,所述调度模块具体用于通过以下步骤判断每一个队列对应的报文数是否为0:
向每一个计数器获取该计数器的计数值,在该计数器的计数值不为0时,判断出该计数器对应的队列的报文数不为0,在该计数器的计数值为0时,判断出该计数器对应的队列的报文数为0;
或者,在接收到任一计数器发来的用于指示该计数器的计数值不为0的指示标记时,判断出该计数器对应的队列的报文数不为0,在接收到该计数器发来的用于指示该计数器的计数值为0的指示标记时,判断出该计数器对应的队列的报文数为0,其中,所述指示标记是该计数器的计数值发生变化时发出的。
9.根据权利要求6或7所述的装置,其特征在于,
所述队列管理模块,还用于在将所述入队请求消息中携带的需要入队的报文的相关信息存放到对应的第一队列中之后,若记录的所述第一队列的队列状态为空,则将所述第一队列的队列状态更新为非空;还用于在从所述第一队列中删除所述需要出队的报文的相关信息之后,在判断出所述第一队列为空时,将记录的所述第一队列的队列状态更新为空;
所述调度模块具体用于根据记录的每一个队列的队列状态、以及每一个队列对应的报文数,按照优先级,从队列状态为非空、并且对应的报文数不为0的队列中,选择需要调度的第一队列。
10.根据权利要求6或7所述的装置,其特征在于,还包括:
发送处理模块,用于在所述调度模块选择出需要调度的第一队列之后,从所述第一队列中读取需要出队的一个报文的相关信息,判断所述需要出队的报文是否允许出队;还用于若判断出所述需要出队的报文允许出队,则根据从所述第一队列中读取的所述需要出队的报文的相关信息,读取所述需要出队的报文,并发出所述第一出队消息给所述队列管理模块,若判断出所述需要出队的报文不允许出队,则丢弃所述需要出队的报文的相关信息,发出第二出队消息给所述队列管理模块。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610462810.8A CN107528789B (zh) | 2016-06-22 | 2016-06-22 | 报文调度方法及装置 |
PCT/CN2017/089469 WO2017219993A1 (zh) | 2016-06-22 | 2017-06-22 | 报文调度 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610462810.8A CN107528789B (zh) | 2016-06-22 | 2016-06-22 | 报文调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107528789A CN107528789A (zh) | 2017-12-29 |
CN107528789B true CN107528789B (zh) | 2020-02-11 |
Family
ID=60734361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610462810.8A Active CN107528789B (zh) | 2016-06-22 | 2016-06-22 | 报文调度方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107528789B (zh) |
WO (1) | WO2017219993A1 (zh) |
Families Citing this family (8)
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 | 华为技术有限公司 | 队列信息的处理方法及装置 |
CN112765223B (zh) * | 2021-01-26 | 2023-07-14 | 红云红河烟草(集团)有限责任公司 | 一种基于队列的设备参数数据对齐方法 |
CN113179226B (zh) * | 2021-03-31 | 2022-03-29 | 新华三信息安全技术有限公司 | 一种队列调度方法及装置 |
CN114553789B (zh) * | 2022-02-24 | 2023-12-12 | 昆高新芯微电子(江苏)有限公司 | 直通转发模式下TSN Qci流过滤功能的实现方法和系统 |
CN115296900B (zh) * | 2022-08-03 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种网络报文修正方法、装置、电子设备及存储介质 |
Citations (2)
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 |
CN102387076A (zh) * | 2011-10-19 | 2012-03-21 | 烽火通信科技股份有限公司 | 一种结合整形的分级式队列调度方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179487B (zh) * | 2006-11-10 | 2011-05-11 | 中兴通讯股份有限公司 | 一种计算机网络数据包转发的队列管理方法 |
CN100562117C (zh) * | 2007-11-19 | 2009-11-18 | 华为技术有限公司 | 一种码流调度方法、装置和系统 |
CN105099947B (zh) * | 2014-09-25 | 2019-04-05 | 航天恒星科技有限公司 | 空间网络接入方法及装置 |
-
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 (2)
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 |
CN102387076A (zh) * | 2011-10-19 | 2012-03-21 | 烽火通信科技股份有限公司 | 一种结合整形的分级式队列调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107528789A (zh) | 2017-12-29 |
WO2017219993A1 (zh) | 2017-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107528789B (zh) | 报文调度方法及装置 | |
CN109565455B (zh) | 具有高速缓存的分组存储器中的分组描述符存储 | |
US10326713B2 (en) | Data enqueuing method, data dequeuing method, and queue management circuit | |
US8656071B1 (en) | System and method for routing a data message through a message network | |
US7149226B2 (en) | Processing data packets | |
US7327674B2 (en) | Prefetching techniques for network interfaces | |
US8077727B2 (en) | Processing of partial frames and partial superframes | |
EP2077648A1 (en) | Method and apparatus for shared multi-bank memory | |
US11425057B2 (en) | Packet processing | |
KR20120070595A (ko) | 패킷 처리 장비내에서의 플로우 데이터의 저장 관리 방법 및 패킷 처리 장비 | |
US7433364B2 (en) | Method for optimizing queuing performance | |
US20180183733A1 (en) | Receive buffer architecture method and apparatus | |
US9485326B1 (en) | Scalable multi-client scheduling | |
US8223788B1 (en) | Method and system for queuing descriptors | |
US20120294315A1 (en) | Packet buffer comprising a data section and a data description section | |
US20170017404A1 (en) | System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices | |
US6594270B1 (en) | Ageing of data packets using queue pointers | |
CN105573711A (zh) | 一种数据缓存方法及装置 | |
US20120106567A1 (en) | Mlppp occupancy based round robin | |
WO2011085934A1 (en) | A packet buffer comprising a data section and a data description section | |
US7411902B2 (en) | Method and system for maintaining partial order of packets | |
US6701447B1 (en) | System for delaying the counting of occurrences of a plurality of events occurring in a processor until the disposition of the event has been determined | |
US7822051B1 (en) | Method and system for transmitting packets | |
US6973036B2 (en) | QoS scheduler and method for implementing peak service distance using next peak service time violated indication | |
US20230013473A1 (en) | Network device that utilizes packet grouping |
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 |