用于交换芯片的通道调度方法和装置与流程

文档序号:17125681发布日期:2019-03-16 00:23阅读:228来源:国知局
用于交换芯片的通道调度方法和装置与流程

本发明涉及网络通信技术领域,尤其涉及一种用于交换芯片的通道调度方法和装置。



背景技术:

当前网络发展日新月异,随着网络上新应用的不断出现,对网络的服务质量也提出了新的要求,例如,voip(voiceoverinternetprotocol,基于网络协议的语音)等实时业务就对报文的传输延迟提出了较高的要求;而e-mail(电子邮件)和ftp(filetransferprotocol,文件传输协议)等业务对网络通信中的时间延迟并不敏感。为了支持不同应用对带宽、延迟等特殊需求,需要交换机能够区分不同类型的网络通信,进而为之提供相应的服务;即在网络发生拥塞的时候,交换机需要有些为某些类型的网络通信提供优先服务,有限转发这些网络通信的数据包。

因此,在交换机芯片中,如何设计一种通道调度方法和装置,就成为一个亟待解决的问题。



技术实现要素:

本发明的目的在于提供一种用于交换芯片的通道调度方法和装置。

为了实现上述发明目的之一,本发明一实施方式提供一种用于交换芯片的通道调度方法,所述交换芯片包含有输出通道和若干输入通道,所述若干输入通道都具有优先级、且带宽越高的输入通道具有越高的优先级,包含以下步骤:

依照优先级由高到低的次序,将所述若干输入通道排成一队列;依照轮询算法,从队头开始从所述队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道;从所述队列从选择出优先级最高、且包含有输入数据的输入通道作为第二输入通道;

在确定第一输入通道属于第一列表和第二输入通道都属于第二列表时,优选调度出第二输入通道,其次调度出第一输入通道,其中,第一、第二列表中存储的输入通道都属于所述若干输入通道,且第一列表中的所有输入通道的带宽值都小于第二列表中的所有输入通道的带宽值。

作为本发明一实施方式的进一步改进,所述“依照轮询算法,从队头开始从所述队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道”,包括:

在初始化时,指针指向该队列的队头元素,为该队列中的每个队列元素都设置大于零的权重值,优先级越高的队列元素的权重值越高,在该队列中,队尾元素的下一个队列元素为队头元素;

在进行一轮轮询时,持续将指针指向下一个队列元素,直至所述指针所指向的队列元素包含输入元素、且权重值大于零;

将所述指针指向的队列元素的权重值减一,且选择出所述指针指向的队列元素中的传输通道。

作为本发明一实施方式的进一步改进,还包括以下步骤:

在确定第一输入通道不属于第一列表、并且第二输入通道属于第二列表时,调度出第二输入通道。

作为本发明一实施方式的进一步改进,还包括以下步骤:

在确定第一输入通道属于第一列表、并且第二输入通道不属于第二列表时,调度出第一输入通道。

作为本发明一实施方式的进一步改进,所述“调度出第一输入通道”,包括:将第一输出通道中的数据调度所述输出通道;所述“调度出第二输入通道”,包括:将第二输出通道中的数据调度所述输出通道。

本发明实施例还提供了一种用于交换芯片的通道调度装置,所述交换芯片包含有输出通道和若干输入通道,所述若干输入通道都具有优先级、且带宽越高的输入通道具有越高的优先级,包含以下模块:

初始化模块,用于依照优先级由高到低的次序,将所述若干输入通道排成一队列;依照轮询算法,从队头开始从所述队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道;从所述队列从选择出优先级最高、且包含有输入数据的输入通道作为第二输入通道;

第一调度模块,用于在确定第一输入通道属于第一列表和第二输入通道都属于第二列表时,优选调度出第二输入通道,其次调度出第一输入通道,其中,第一、第二列表中存储的输入通道都属于所述若干输入通道,且第一列表中的所有输入通道的带宽值都小于第二列表中的所有输入通道的带宽值。

作为本发明一实施方式的进一步改进,所述初始化模块,还用于:在初始化时,指针指向该队列的队头元素,为该队列中的每个队列元素都设置大于零的权重值,优先级越高的队列元素的权重值越高,在该队列中,队尾元素的下一个队列元素为队头元素;在进行一轮轮询时,持续将指针指向下一个队列元素,直至所述指针所指向的队列元素包含输入元素、且权重值大于零;将所述指针指向的队列元素的权重值减一,且选择出所述指针指向的队列元素中的传输通道。

作为本发明一实施方式的进一步改进,还包括以下模块:第二调度模块,用于在确定第一输入通道不属于第一列表、并且第二输入通道属于第二列表时,调度出第二输入通道。

作为本发明一实施方式的进一步改进,还包括以下模块:第三调度模块,用于在确定第一输入通道属于第一列表、并且第二输入通道不属于第二列表时,调度出第一输入通道。

作为本发明一实施方式的进一步改进,所述第一调度模块,还用于:将第一输出通道中的数据调度所述输出通道;将第二输出通道中的数据调度所述输出通道。

相对于现有技术,本发明的技术效果在于:本发明实施例提供了一种通道调度方法,包含以下步骤:依照优先级由高到低的次序,将若干输入通道排成一队列;依照轮询算法,从队头开始从队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道;从队列从选择出优先级最高、且包含有输入数据的输入通道作为第二输入通道;在确定第一输入通道属于第一列表和第二输入通道都属于第二列表时,优选调度出第二输入通道,其次调度出第一输入通道,其中,第一、第二列表中存储的输入通道都属于若干输入通道,且第一列表中的所有输入通道的带宽值都小于第二列表中的所有输入通道的带宽值。从而提供了一种通道调度方法。

附图说明

图1是本发明实施例提供的通道调度方法的流程示意图。

具体实施方式

以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

应当理解的是尽管术语第一、第二等在本文中可以被用于描述各种元件或结构,但是这些被描述对象不应受到这些术语的限制。这些术语仅用于将这些描述对象彼此区分开。例如,第一输入通道可以被称为第二输入通道,并且类似地第二输入通道也可以被称为第一输入通道,这并不背离本申请的保护范围。

本发明实施例提供了一种用于交换芯片的通道调度方法,所述交换芯片包含有输出通道和若干输入通道,所述若干输入通道都具有优先级、且带宽越高的输入通道具有越高的优先级,如图1所示,包含以下步骤:

步骤101:依照优先级由高到低的次序,将所述若干输入通道排成一队列;依照轮询算法,从队头开始从所述队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道;这里,首选会按照优先级由高到低的次序将所述若干输入通道排成一队列,从优先级最高的队头开始,依次选择出整个队列组,循环往复,各个队列调度机会均等,没有输入数据的输入队列不参与调度。例如,输入通道a的优先权为2,输入通道b的优先权为3,输入通道c的优先权为4,则在第一轮调度时,依次选择出输入通道c,输入通道b和输入通道a;在第二轮调度时,首先选择出输入通道c,然后再次选择时,如果输入通道b不包含有输入数据,则选择出输入通道a;之后再进行第三轮调度。可以理解的是,当所有输入通道中的输入数据流的长度相等时,该算法是公平的,而当某个输入通道的输入数据流的长度较长(例如,某个输入通道的传输速率较高时,很容易形成较长的输入数据流)时,就会不公平了。

从所述队列从选择出优先级最高、且包含有输入数据的输入通道作为第二输入通道;这里,该算法每次都会选择出优先级最高的输入通道作为第二输入通道,可以理解的是,这有利于优先级较高的输入通道,而不利于优先级较低的输入通道。

步骤102:在确定第一输入通道属于第一列表和第二输入通道都属于第二列表时,优选调度出第二输入通道,其次调度出第一输入通道,其中,第一、第二列表中存储的输入通道都属于所述若干输入通道,且第一列表中的所有输入通道的带宽值都小于第二列表中的所有输入通道的带宽值。这里,当需要确保某些低带宽的输入通道的传输质量时,可以将这些低带宽的传输通道写入到第一列表中;当需要确保某些高带宽的输入通道的传输质量时,可以将这些高带宽的传输通道写入到第二列表中。

这里,当该输出通道的带宽饱和时,即在预设时间内,所述若干输出通道中欲输出的数据的长度总和大于该输出通道所能输出的数据的总长度时,该交换芯片就需要丢弃某些数据了;而在本实施例的通道调度方法中,可以预设将需要确保其传输质量的一些输入通道存储到第一、第二列表中(低带宽的存储到第一列表中,高带宽的存储到第二列表中),可以理解的是,第一输入通道属于低速的输入通道,而第二输入通道属于高速的输入通道,在该通道调度方法中,优选调度出第二输入通道,之后再调度出第一输入通道,因此,该通道调度方法会优先选择带宽较高的输入通道,从而让高带宽的输入通道的带宽请求得到满足。

优选的,所述“依照轮询算法,从队头开始从所述队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道”,包括:

在初始化时,指针指向该队列的队头元素,为该队列中的每个队列元素都设置大于零的权重值,优先级越高的队列元素的权重值越高,在该队列中,队尾元素的下一个队列元素为队头元素;

在进行一轮轮询时,持续将指针指向下一个队列元素,直至所述指针所指向的队列元素包含输入元素、且权重值大于零;将所述指针指向的队列元素的权重值减一,且选择出所述指针指向的队列元素中的传输通道。这里,假设输入通道a的权重值为2,输入通道b的权重值为3,输入通道c的权重值为4;则第一轮调度时,依次调度出输入通道c(权重值变为3),输入通道b(权重值变为2)、输入通道a(权重值变为1);第二轮调度时,依次调度出输入通道c(权重值变为2),输入通道b(权重值变为1)、输入通道a(权重值变为0);第三轮调度时,依次调度出输入通道c(权重值变为1),输入通道b(权重值变为0);第四轮调度时,依次调度出输入通道c(权重值变为0),则该调度算法结束运行。

优选的,还包括以下步骤:在确定第一输入通道不属于第一列表、并且第二输入通道属于第二列表时,调度出第二输入通道。

优选的,还包括以下步骤:在确定第一输入通道属于第一列表、并且第二输入通道不属于第二列表时,调度出第一输入通道。

优选的,所述“调度出第一输入通道”,包括:将第一输出通道中的数据调度所述输出通道;所述“调度出第二输入通道”,包括:将第二输出通道中的数据调度所述输出通道。

本发明实施例还提供了一种用于交换芯片的通道调度装置,所述交换芯片包含有输出通道和若干输入通道,所述若干输入通道都具有优先级、且带宽越高的输入通道具有越高的优先级,包含以下模块:

初始化模块,用于依照优先级由高到低的次序,将所述若干输入通道排成一队列;依照轮询算法,从队头开始从所述队列中选择出输入通道作为第一输入通道,在执行一轮轮询算法时,略过没有输入数据的输入通道;从所述队列从选择出优先级最高、且包含有输入数据的输入通道作为第二输入通道;

第一调度模块,用于在确定第一输入通道属于第一列表和第二输入通道都属于第二列表时,优选调度出第二输入通道,其次调度出第一输入通道,其中,第一、第二列表中存储的输入通道都属于所述若干输入通道,且第一列表中的所有输入通道的带宽值都小于第二列表中的所有输入通道的带宽值。

优选的,所述初始化模块,还用于:在初始化时,指针指向该队列的队头元素,为该队列中的每个队列元素都设置大于零的权重值,优先级越高的队列元素的权重值越高,在该队列中,队尾元素的下一个队列元素为队头元素;

在进行一轮轮询时,持续将指针指向下一个队列元素,直至所述指针所指向的队列元素包含输入元素、且权重值大于零;

将所述指针指向的队列元素的权重值减一,且选择出所述指针指向的队列元素中的传输通道。

优选的,还包括以下模块:

第二调度模块,用于在确定第一输入通道不属于第一列表、并且第二输入通道属于第二列表时,调度出第二输入通道。

优选的,还包括以下模块:

第三调度模块,用于在确定第一输入通道属于第一列表、并且第二输入通道不属于第二列表时,调度出第一输入通道。

优选的,所述第一调度模块,还用于:

将第一输出通道中的数据调度所述输出通道;

将第二输出通道中的数据调度所述输出通道。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1