著录项信息
专利名称 | 解决小包线速的credit调度方法、调度装置及旁路器 |
申请号 | CN201110036866.4 | 申请日期 | 2011-02-12 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-06-22 | 公开/公告号 | CN102104545A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/56 | IPC分类号 | H;0;4;L;1;2;/;5;6查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为基地总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 张遵福;史洪波;包雅林 |
代理机构 | 北京三友知识产权代理有限公司 | 代理人 | 戴云霓 |
摘要
本发明实施例提供了一种解决小包线速的credit调度方法、调度装置及旁路器,该方法包括:接收队列号和进入所述队列号对应队列的数据包的包长值;将该包长值增加到该队列号对应的队列的长度值上,获得更新后的队列长度值;判断所述队列更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;当不申请调度时为所述队列分配不超过所述更新后的队列长度值的credit;使所述更新后的队列长度值和所述当前的credit均减去已为所述队列分配的credit。本发明避免了调度器为具有剩余credit的队列给予不必要的调度而造成的调度器空转的情形,有利于在小包场景中使出口达到线速;并节省credit调度器的带宽资源,使得调度更加合理和高效。
1.一种解决小包线速的credit调度方法,其特征在于,所述方法包括:
接收队列号和进入所述队列号对应队列的数据包的包长值;
将所述包长值增加到所述队列号对应的队列的长度值上,获得更新后的队列长度值;
判断所述队列更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;
当不申请调度时为所述队列分配不超过所述更新后的队列长度值的credit;
使所述更新后的队列长度值和所述当前的credit均减去已为所述队列分配的credit;
当判断要申请调度时,将所述队列更新后的队列长度值以及所述队列当前的credit通知credit调度器以申请调度;接收所述credit调度器为所述队列分配的credit,并发放不超过所述更新后的队列长度值的credit给队列管理器,以对所述队列进行出队。
2.根据权利要求1所述的方法,其特征在于,当有多个队列需要出队时,在所述多个队列的端口间轮询选择一个端口,在选中的端口内根据严格优先级SP调度算法选择最高优先级队列,为所述最高优先级队列发放credit。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:获取所述队列的数据包入队频率;获取为所述队列发放credit的发放频率;根据所述入队频率和所述发放频率,调整每次为所述队列发放的credit的值。
4.一种解决小包线速的credit旁路器,其特征在于,所述旁路器包括:
接收单元,用于接收队列号和进入所述队列号对应队列的数据包的包长值;
队列长度更新单元,用于将所述包长值增加到所述队列号对应的队列的长度值上,获得更新后的队列长度值;
调度申请判断单元,用于判断所述更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;
令牌分配单元,用于当不申请调度时,为所述队列分配不超过所述队列更新后的队列长度值的credit;
所述队列长度更新单元,还用于使所述更新后的队列长度值减去已为所述队列分配的credit;
队列令牌更新单元,用于使所述当前的credit减去已为所述队列分配的credit;
调度申请单元,用于当所述队列更新后的队列长度值与所述队列当前的令牌credit的差值大于零时,将所述队列更新后的队列长度值以及所述队列当前的credit通知credit调度器以申请调度;
所述接收单元,还用于接收credit调度器为该队列分配的credit;
所述令牌分配单元,还用于发放不超过所述队列更新后的队列长度值的credit给队列管理器,以对所述队列进行出队。
5.根据权利要求4所述的旁路器,其特征在于,所述旁路器还包括:队列选择单元,用于当有多个队列需要出队时,在所述多个队列的端口间轮询选择一个端口,在选中的端口内根据严格优先级SP调度算法选择最高优先级队列;
所述令牌分配单元,还用于为所述最高优先级队列发放credit。
6.根据权利要求4或5所述的旁路器,其特征在于,所述旁路器还包括:第一获取单元,用于获取所述队列的数据包入队频率;第二获取单元,用于获取为所述队列发放credit的发放频率;令牌调整单元,用于根据所述入队频率和所述发放频率,调整每次为所述队列发放credit的值。
7.一种解决小包线速的credit调度装置,其特征在于,所述credit调度装置包括:
队列管理器,用于负责数据包的入队和出队,并向旁路器发送队列号和进入所述队列号对应队列的数据包的包长值;
旁路器,所述旁路器包括:
接收单元,用于接收所述队列管理器发送的队列号和进入所述队列号对应队列的数据包的包长值;
队列长度更新单元,用于将所述包长值增加到所述队列号对应的队列的长度值上,获得更新后的队列长度值;
调度申请判断单元,用于判断所述队列更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;
令牌分配单元,用于当不申请调度时为所述队列分配不超过所述更新后的队列长度值的credit;
所述队列长度更新单元,还用于使所述更新后的队列长度值减去已为所述队列分配的credit;
队列令牌更新单元,用于使所述当前的credit减去已为所述队列分配的credit;
调度申请单元,用于当所述队列更新后的队列长度值与所述队列当前的令牌credit的差值大于零时,将所述队列更新后的队列长度值以及所述队列当前的credit通知credit调度器以申请调度;
所述接收单元,还用于接收credit调度器为该队列分配的credit;
所述令牌分配单元,还用于发放不超过所述队列更新后的队列长度值的credit给队列管理器,以对所述队列进行出队;
调度器,用于在接收到所述旁路器的调度申请后,为所述队列管理器中的所述队列号对应的队列分配credit,并将分配的credit发送给所述旁路器。
8.根据权利要求7所述的credit调度装置,其特征在于,所述旁路器还包括:队列选择单元,用于当有多个队列需要出队时,在所述多个队列的端口间轮询选择一个端口,在选中的端口内根据严格优先级SP调度算法选择最高优先级队列;所述令牌分配单元,还用于为所述最高优先级队列发放credit。
9.根据权利要求7或8所述的credit调度装置,其特征在于,所述旁路器还包括:第一获取单元,用于获取所述队列的数据包入队频率;第二获取单元,用于获取为所述队列发放credit的发放频率;令牌调整单元,用于根据所述入队频率和所述发放频率,调整每次为所述队列发放的credit的值。
解决小包线速的credit调度方法、调度装置及旁路器\n技术领域\n[0001] 本发明涉及网络中业务流队列的调度方法,具体地涉及一种解决小包线速的credit调度方法、调度装置及旁路器。\n背景技术\n[0002] 调度是实现QoS(Quality of Service,服务质量)的关键技术,网络中节点的出端口都有最大处理能力,当节点的入端口流量大于出口处理能力的情况下,该节点就出现了拥塞,拥塞导致的结果是丢包。在不提供QoS保障的网络节点,通常采取FIFO(First In First Out,先进先出)的方法暂存数据包,一旦由于拥塞造成FIFO满,那么新进入该节点的数据包被丢弃,而并不关心丢弃的是什么数据包,采取尾丢弃机制(drop tail)丢弃新进入的数据包。为了对不同业务流提供不同的服务质量等级,提出了QoS概念,网络中节点需识别不同的业务流,给予差别化的服务。其中节点中采取多队列的方法暂存数据包,不同的业务流存储在不同的队列中,当节点发生拥塞时,给予各队列中的业务流不同的服务保证,如给予视频业务低时延保证,数据业务高带宽保证等。而调度就是从不同业务流队列中按照服务质量要求,选择一个队列出来给予服务,是实现QoS的核心技术,如图1所示,图1为现有技术的调度示意图。在图1中,WRED表示加权随机早期检测(Weighted RandomEarly Detection)。\n[0003] 通常调度采取基于包,即每次调度一个数据包,调度器(scheduler)需感知每个包的包长,在多为变长包的真实网络场景,调度器需知道每次调度出的数据包的包长,通过包长,调度器能精确计算出各队列所获得的带宽,能较好的满足不同业务流的不同服务质量要求。\n[0004] 当队列数目较大,基于包的调度器要感知所有队列中的包长信息,从实现上来看,将面临较大困难,因为要存储巨大数量队列(几十甚至几百K)的包长信息,将会消耗大量的存储资源,同时管理上将变得复杂。另外,在网络带宽非常高的应用,基于包的调度将需要采取非常高的频率进行调度数据包,硬件时序上也面临挑战。\n[0005] 基于令牌(credit)的调度,是另一种调度策略,与基于包的调度不同,调度器不需感知包长信息,而是把所有队列中的包长看成定长包,每次调度结果是给予能发送一个定长包的令牌,调度器感知的是队列的长度,队列长度大于0的队列请求调度,而对于队列长度小于的0的队列,调度器不给予调度机会。基于令牌调度适合在队列数目较大的地方使用,同样能提供较好的服务质量保证。\n[0006] 现有技术的技术方案是:现有基于credit调度,是认为队列中的所有包都是定长,每次调度,给予分配固定长度的credit,队列管理模块QM(Queue Manager),获得credit后,依此从队列中读出数据包,同时把获得的credit减去实际发送出的包长作为新的credit,很显然,这个值有可能为正,也可能为负,为正,说明获得的credit,能够继续从该队列中读出下一个包,而为负,说明所获的credit,不够完全发送当前包,即当前发送包的字节大于获得的credit。对于队列已空,且更新后的credit仍然大于0的队列,那么剩下的credit就是调度器多分配的带宽,这部分带宽可以作为下次新来包出队的credit。因为基于credit是认为包长都是定长,而实际系统中很可能是变长包,因此,调度的边界不一定是包的边界。现有技术方案的做法是:对于存在剩余的credit,且队列已空的队列,如果下次有新包进入队列,那么该队列仍然可参与调度器的调度,虽然上次出队后有credit剩余,调度器如果调度到该队列,那么分配credit为0,该队列获得为0的credit后,把上次剩余的credit作为新的credit读出数据包,即是消耗上次剩余的带宽,而此次调度器分配的带宽为0,本质上调度器空转一轮。\n[0007] 以下通过举例来描述现有技术存在的小包不线速的问题。图2为现有技术的小包不线速场景的示意图,如图2所示,数据包以线速进入队列,共8个队列,进入的数据包,严格按照队列序号顺序进入每一个队列,包长为64B。如进入队列号的顺序为:0,1,\n2......7,0,1......7,0......,入口线速,进入的数据每个时钟(频率为1MHz)一个包,那么入口线速总带宽为64*8*1M=512Mbps。这8个队列配置为严格优先级(SP,Strict Priority)调度,队列0优先级最高,依次按队列号降低,那么credit调度器按每8个时钟调度一次,调度的credit等于512B,那么调度能力正好等于入口带宽,如果出口带宽也等于入口带宽,那么理论上节点不拥塞,不会丢包。但实际调度的过程如下:\n[0008] 时刻1:第一次调度,队列0非空,给予该队列分配512B,该队列读出数据后,剩下\n512-64=448B credit;\n[0009] 时刻9:第二次调度,队列0非空,由于该队列存在剩余credit,那么调度器分配credit为0,该队列读出数据后,剩余448-64=384B credit.\n[0010] 时刻17:第三次调度,队列0非空,同上时刻,给予分配credit 0,......[0011] 当队列0的剩余credit全部用完,调度器才能继续分配非零的credit,显然只要队列0非空,那么调度器一直调度该队列,最终导致其他低优先级队列得不到调度机会,同时出口带宽不线速,带宽浪费。\n[0012] 发明人在实现本发明的过程中发现,现有技术至少存在以下不足:\n[0013] 基于credit调度不是按包进行调度,因此,在实现上,可以较长时间调度一次,从而降低实现复杂度。现有技术中对于存在剩余credit的队列,如果有新来的包,调度器仍然给予调度,但分配的credit为0,即让调度器空转一轮。首先,如果调度器配置的总调度能力等于出口的线速处理能力,没有加速比,那么存在的空转次数,会使得调度器调度出的credit不足以发送足够的数据包,出口达不到线速,造成带宽浪费;其次,即使调度器有一定加速比,如果队列中全是小包的情况(小于128B),那么会带来小包不线速。\n发明内容\n[0014] 本发明实施例的目的在于,克服现有技术的不足,提供一种解决小包线速的credit调度方法、调度装置及旁路器,以解决基于credit调度器的小包不线速问题,并且避免调度器的有限带宽资源被浪费。\n[0015] 为达上述目的,一方面,本发明实施例提供了一种解决小包线速的credit调度方法,所述方法包括:接收队列号和进入所述队列号对应队列的数据包的包长值;将所述包长值增加到所述队列号对应的队列的长度值上,获得更新后的队列长度值;判断所述队列更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;当不申请调度时为所述队列分配不超过所述更新后的队列长度值的credit;使所述更新后的队列长度值和所述当前的credit均减去已为所述队列分配的credit。\n[0016] 为达上述目的,另一方面,本发明实施例提供了一种解决小包线速的credit旁路器,所述旁路器包括:接收单元,用于接收队列号和进入所述队列号对应队列的数据包的包长值;队列长度更新单元,用于将所述包长值增加到所述队号对应的队列的长度值上,获得更新后的队列长度值;调度申请判断单元,用于判断所述更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;令牌分配单元,用于当不申请调度时为所述队列分配不超过所述队列更新后的队列长度值的credit;\n所述队列长度更新单元,还用于使所述更新后的队列长度值减去已为所述队列分配的credit;队列令牌更新单元,用于使所述当前的credit减去已为所述队列分配的credit。\n[0017] 为达上述目的,又一方面,本发明实施例提供了一种解决小包线速的credit调度装置,所述credit调度装置包括:队列管理器,用于负责数据包的入队和出队,并向旁路器发送队列号和进入所述队列号对应队列的数据包的包长值;旁路器,用于接收所述队列管理器发送的队列号和进入所述队列号对应队列的数据包的包长值;将所述包长值增加到所述队号对应的队列的长度值上,获得更新后的队列长度值;判断所述队列更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;当不申请调度时为所述队列分配不超过所述更新后的队列长度值的credit;使所述更新后的队列长度值和所述当前的credit均减去已为所述队列分配的credit;调度器,用于在接收到所述旁路器的调度申请后,为所述队列管理器中的所述队列号对应的队列分配credit,并将分配的credit发送给所述旁路器。\n[0018] 本发明实施例提供的上述技术方案,根据非空队列当前的队列长度与其当前的令牌credit的差值以决定是否向credit调度器申请调度,如当前队列长度值与当前令牌值的差值小于或等于零,则不申请调度,而为该队列分配合适的credit进行出队操作,避免了调度器为具有剩余credit的队列给予不必要的调度而造成的调度器空转的情形,而减少调度器空转次数有利于在小包场景中使出口达到线速;同时,由于减少了调度器空转的次数,节省了credit调度器的带宽资源,使得调度器可以去调度其它队列队,避免其它队列长时间得不到调度,使得调度更加合理和高效。\n附图说明\n[0019] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。\n[0020] 图1为现有技术的调度示意图;\n[0021] 图2为现有技术的小包不线速场景的示意图;\n[0022] 图3为本发明实施例的一种解决小包线速的credit调度装置的功能框图;\n[0023] 图4为本发明实施例图3中旁路器的整体功能框图;\n[0024] 图4A为本发明实施例图4中旁路器实施分层调度以选择队列的示意图;\n[0025] 图5为本发明实施例图3中旁路器的细化功能框图;\n[0026] 图6为本发明实施例中旁路器的工作流程图;\n[0027] 图7为本发明实施例作为一个举例的依据图6所示调度方法的流程图;\n[0028] 图8为本发明实施例作为又一个举例的实现小包线速的示意图。\n具体实施方式\n[0029] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0030] 本发明实施例提供了一种解决小包线速的credit调度方法、调度装置及旁路器。\n本发明实施例是利用旁路器旁路(bypass)这部分剩余的credit,队列管理器(QM)能在调度器暂时不调度该队列的条件下采用这部分剩余的credit继续出队新进的包,而不是再去占用调度器的调度时隙。这样,调度器每次调度都能分配固定大小的credit,能够保证分配的credit大于或等于出口带宽,对于上次分配过多credit的队列,让其暂时不参与调度,直到该剩余credit由上述旁路器消耗完,从而可以避免占用其他队列的调度机会。本发明实施例通过增加credit旁路器,能够解决小包不线速的问题,同时低优先级队列也能得到合理的调度机会。\n[0031] 图3为本发明实施例的一种解决小包线速的credit调度装置的功能框图。如图\n3所示,该credit调度装置包括:\n[0032] 队列管理器QM10,用于负责数据包的入队和出队,并向旁路器bypass20发送队列号和进入队列号对应队列的数据包的包长值;\n[0033] 旁路器20,用于接收队列管理器10发送的队列号和进入队列号对应队列的数据包的包长值;将包长值增加到队号对应的队列的长度值上,获得更新后的队列长度值;判断上述队列更新后的队列长度值与所述队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;当不申请调度时为该队列分配不超过其更新后的队列长度值的credit;使该列队更新后的队列长度值和该队列当前的credit均减去已为该队列分配的credit;\n[0034] 调度器30,用于在接收到旁路器20的调度申请后,为队列管理器中的队列号对应的队列分配credit,并将分配的credit发送给旁路器20。\n[0035] 可选地,该旁路器20还可以用于,当有多个队列需要出队时,在上述多个队列的端口间轮询选择一个端口,在选中的端口内根据严格优先级SP调度算法选择最高优先级队列,为上述最高优先级队列发放credit。\n[0036] 可选地,该旁路器20还可以用于,获取上述队列的数据包入队频率;获取为上述队列发放credit的发放频率;根据上述入队频率和上述发放频率,调整每次为上述队列发放credit的值。\n[0037] 在本发明实施例中,为了bypass剩余的credit,在队列管理器10与credit调度器30之间增加一个旁路器20,对于有credit剩余的空队列,新进来的包,通过旁路器20控制,能快速从队列中读出,消耗掉这部分剩余的credit。如图3所示,队列管理器QM10,用于负责数据包的入队和出队;调度器30,用于负责对QM中的队列进行调度,分配credit;旁路器20,负责把QM中队列的非空状态通告给调度模块,同时接收调度模块分配的credit,按一定规则发放给QM进行出队。这三个模块协作共同实现基于credit调度的策略。\n[0038] 较佳地,旁路器20维护QM10的队列长度表,记为“len表”,存储QM中每个队列的队列长度,单位为字节。另外,该旁路器20还维护由从调度器30接收的credit构成的队列令牌表,记为“credit表”,其存储QM中每个队列从调度器30获得的credit数量,单位为字节。旁路器20维护的这两个表,按照一定规则把credit分配给QM10。\n[0039] 旁路器20维护了QM10中的队列长度和从调度模块获得的credit信息,通过计算维护的队列长度与credit的差值,判断是否向调度器发送调度请求,同时旁路器20基于维护的队列长度与credit,按照一定规则把存储的credit发放给QM,QM获得credit后从队列中读出数据包,完成出队操作。旁路器20发放credit的规则可按实际需求设计,原则是发放给QM的credit数量不超过QM中实际存储的队列长度。如果旁路器20从调度器30获得分配给一个队列的credit超过了该队列的长度,那么剩余的credit暂时存储在旁路器20中,不发放给QM。这部分credit,待该队列有新的数据包入队,通过旁路器20直接发放给QM进行出队,而不需等到调度器30调度后再出队。这样调度器30就可以有时隙去调度其他非空队列。\n[0040] 本发明实施例的有益效果在于,解决小包达不到线速问题,在特殊的场景下,通过bypass机制,能快速消耗掉上次调度剩余的credit,而不是再去占用调度器有限的调度时隙,这样,credit调度器能按较长时间调度一次,降低实现复杂度。同时,通过bypass机制,能有限降低数据包的延时,对于延时敏感的业务非常有利。\n[0041] 图4为本发明实施例图3中旁路器的整体功能框图。结合参阅图3和图4,该旁路器20包括:\n[0042] 接收单元200,用于接收队列号和进入上述队列号对应队列的数据包的包长值;\n[0043] 队列长度更新单元202,用于将上述包长值增加到上述队号对应的队列的长度值上,获得更新后的队列长度值;\n[0044] 调度申请判断单元204,用于判断该列队更新后的队列长度值与该队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;\n[0045] 令牌分配单元208,用于当不申请调度时为该队列分配不超过上述队列更新后的队列长度值的credit;\n[0046] 该队列长度更新单元202,还用于使上述更新后的队列长度值减去已为该队列分配的credit值;\n[0047] 队列令牌更新单元210,用于使当前的credit减去已为该队列分配的credit值。\n[0048] 可选地,该旁路器20还可以进一步包括:调度申请单元206,用于当上述队列更新后的队列长度值与上述队列当前的令牌credit的差值大于零时,将该队列更新后的队列长度值以及该队列当前的credit通知credit调度器30以申请调度。\n[0049] 该接收单元200,还可以用于接收credit调度器30为该队列分配的credit;该令牌分配单元208,还可以用于发放不超过该队列更新后的队列长度值的credit给队列管理器10,以对该队列进行出队。\n[0050] 可选地,该旁路器20还可以进一步包括:队列选择单元212,用于当有多个队列需要出队时,在上述多个队列的端口间轮询选择一个端口,在选中的端口内根据严格优先级SP调度算法选择最高优先级队列;上述令牌分配单元208,还可以用于为该最高优先级队列发放credit。\n[0051] 本发明实施例中,credit调度器30可以较长时间调度一次,分配出去的credit,如果大于队列长度,剩余的credit可以通过bypass机制,把新进入的数据包快速的读出,完成出队。旁路器Bypass20中的令牌分配单元Allocate credit,快速对所有满足队列长度大于0,且credit大于0的队列给予发放credit给QM,遵循的规则是:保证高优先级比低优先级队列先发放,同时保证端口之间的公平性。因此,在本发明实施例中采取端口之间轮询(RR,Round Robin),而端口内的优先级采取严格优先级(SP)的方法。选择的具体方法包括:先在满足发放条件的端口间轮询选择一个端口,而后在选中端口内,满足发放条件的优先级队列间SP选择最高优先级队列作为最终的选择结果。按照发放credit的原则,给予该选中的队列发放一定数量的credit。以下进行更为详细的说明。\n[0052] 图4A为本发明实施例图4中旁路器实施分层调度以选择队列的示意图。如图4A所示,此处端口可以是物理端口,也可以是逻辑端口,在一个端口内包含多个优先级队列,通常为8个。为了保证在端口间发放令牌的公平性,同时保证端口内高优先级的优先性,采取分层次调度的策略,即先在端口间轮询,然后在选中的端口内各优先级间采用严格优先级的方法。假如有多个队列满足发放令牌的条件(队列长度,令牌均大于0),那么令牌分配单元配合队列选择单元从这些满足条件的队列中,选择一个出来给予发放令牌,选择的方法就是本发明实施例中的端口间轮询RR,端口内优先级间SP。\n[0053] 图5为本发明实施例图3中旁路器的细化功能框图。结合参阅图3和图5,可选地,该旁路器20还可以进一步包括:第一获取单元214,用于获取队列的数据包入队频率;\n第二获取单元216,用于获取为该队列发放credit的发放频率;令牌调整单元218,用于根据上述入队频率和上述发放频率,调整每次为该队列发放的credit数值。\n[0054] Bypass机制最快频率理论上应与数据包入队的最快频率相等,因为在小包的情况下,出口带宽通常按包率计算,如果bypass频率小于入队频率,那么很有可能包率达不到要求,因此,在bypass的实现上,可以按两频率的比例增大旁路器bypass20发放credit的最大值进行补偿频率的差异。比如假设bypass频率为100MHz,即每10ns发放一次credit给QM,假设QM的入队最快频率为200MHz,即每5ns来一个数据包,那么bypass每次发放的credit的最大值为10ns入队包长之和,如果数据包都为64B,那么10ns入队包长为128B。\n[0055] 图6为本发明实施例中旁路器20的工作流程图。如图6所示,旁路器20的工作流程包括如下步骤:\n[0056] 步骤300、接收队列号和进入所述队列号对应队列的数据包的包长值;\n[0057] 步骤302、将该包长值增加到该队列号对应的队列的长度值上,获得更新后的队列长度值;\n[0058] 步骤304、判断该队列更新后的队列长度值与该队列当前的令牌credit的差值是否大于零,如是,申请调度,否则不申请调度;\n[0059] 步骤306、当不申请调度时为该队列分配不超过上述更新后的队列长度值的credit;\n[0060] 步骤8、使上述更新后的队列长度值和上述当前的credit均减去已为所述队列分配的credit值。\n[0061] 可选地,在步骤304之后,图6所示的方法还包括步骤:当判断要申请调度时,将所述队列更新后的队列长度值以及所述队列当前的credit通知credit调度器以申请调度;\n接收所述credit调度器为所述队列分配的credit,并发放不超过所述更新后的队列长度值的credit给队列管理器,以对所述队列进行出队。\n[0062] 可选地,图6所示的方法还可以进一步包括步骤:当有多个队列需要出队时,在所述多个队列的端口间轮询选择一个端口,在选中的端口内根据严格优先级SP调度算法选择最高优先级队列,为所述最高优先级队列发放credit。\n[0063] 可选地,图6所示的方法还可以进一步包括步骤:获取所述队列的数据包入队频率;获取为所述队列发放credit的发放频率;根据所述入队频率和所述发放频率,调整每次为所述队列发放的credit的值。\n[0064] QM10,bypass20及scheduler30相互协作的一个场景如图7所示,图7为本发明实施例作为一个举例的依据图6所示credit调度方法的流程图。如图7所示,该流程包括如下步骤:\n[0065] 步骤400、第一个包到达QM,相应的队列号为0,包长为64B。\n[0066] 步骤402、QM把该包放入队列0,同时发送队列号和包长信息给bypass20。\n[0067] 步骤404、bypass20按接收的列队号和包长,把包长累加到该队列的长度上,假设初始值为0,存入“len表”,同时通告调度器30,该队列非空,请求调度。\n[0068] 步骤406、调度器30按配置的调度算法,对该非空队列进行调度,调度该队列,给予分配例如128Bcredit,把分配的credit返回给bypass20。\n[0069] 步骤408、bypass20接收分配的credit,按队列号,累加到“credit表”中,而后基于该队列的长度(64B)和credit大小(128B),按一定规则把64B的credit发放给QM,同时“len表”和“credit表”都减去已发送的credit作为新值,并且不请求调度。\n[0070] 步骤410、QM模块接收分配的credit后,依次从队列0中读出一个包,完成出队操作。\n[0071] 步骤412、第二个包到达QM,队列号为0,包长为64B。\n[0072] 步骤414、QM10把该包存入队列0,同时发送队列号和包长信息给bypass20。\n[0073] 步骤416、bypass20按接收的队列号和包长信息,把包长累加到该队列的长度上,存入“len”表。\n[0074] 步骤418、bypass20基于新的队列的长度(64B)和credit的大小(64B),按一定的规则把credit(64B)发放给QM,同时“len表”和“credit表”都减去已发放的credit作为新值。\n[0075] 步骤420、QM10接收分配的credit后,依次从队列0中,读出第二个包,完成出队操作。\n[0076] 图8为本发明实施例作为又一个举例的实现小包线速的示意图。如图8所示,同前面例子,共8个队列配置为SP调度,QM按每个时钟入队一个64B数据包,入队顺序按队列序号轮回,如时刻0,1,2......,7,8......15......分别有一个64B包进入队列0,1,\n2,......7,0,1,......7......,同时,QM每入队一个包,都把该包所属队列号和包长通告给旁路器bypass。\n[0077] 旁路器bypass维护队列长度,同时根据队列长度与令牌的差值产生调度请求,请求调度器给予调度,调度器经过调度算法仲裁后,选择一个队列,给予分配固定大小的令牌,分配的令牌发送给旁路器bypass。\n[0078] 旁路器bypass获得令牌后,按照当前队列长度和令牌值,计算可分配给QM的令牌值,把计算出的令牌值发放给QM出队。发放令牌后,旁路器bypass中维护的队列长度和令牌值都需进行更新,更新的方法为均减去已发放的令牌数量,按最新的队列长度与令牌之间的差值更新调度请求。此处例子假设入口带宽线速,调度器设计为每8个时钟调度一次,分配固定512B的令牌,那么调度带宽等于入口线速带宽,理想化调度耗时为0。那么各时刻动作如下:\n[0079] 时刻1:调度器发现队列0有调度请求,给队列0分配512B令牌,旁路器bypass接收到调度器分配的令牌后,启动令牌发放流程,发放的原则是不发放大于队列长度的令牌给QM。由于此时队列0的队列长度为64B,所获令牌为512B,按上述原则,发放令牌64B给QM,同时更新队列0的长度(64-64=0B)与令牌值(512-64=448B),由于更新后的队列长度与令牌的差值为0-448=-448<0,所以旁路器bypass发送关闭调度请求给调度器。\n[0080] 时刻9:调度器启动第二次调度,队列1有调度请求,而队列0的调度请求已被关闭,那么给队列1分配512B的令牌,旁路器bypass获得令牌后,按队列长度和令牌值发放\n64B令牌给QM,发放令牌后,更新队列1的队列长度(64-64=0B)和令牌(512-64=448B),同时计算该队列的队列长度与令牌的差值(0-448=-448),所以旁路器bypass发送关闭队列1调度请求给调度器。\n[0081] 时刻10:时刻8来的队列0的第二个包完成入队后,QM通告旁路器bypass。旁路器bypass完成队列长度的更新,同时检查是否需发送调度请求(64-448=-384<0,关闭调度请求),在时刻9由于要发送队列1的令牌给QM,因此,在本时刻,按bypass原则,把存储在旁路器bypass中的队列0的令牌发放给QM,发放的数量满足上述原则,因此,发送64B令牌给QM,同时更新队列长度(64-64=0B)与令牌值(448-64=384B),继续判断是否需要发送调度请求给调度模块(由于队列0的调度请求已关闭,所以此时不发送关闭调度请求给调度器)。\n[0082] 时刻11:时刻9来的队列1的第二个包完成入队后,QM通告旁路器bypass,旁路器bypass完成队列长度的更新,和时刻10相同,继续发放64B令牌给QM,完成队列1的bypass过程。\n[0083] 时刻17:调度器启动第三次调度,队列2有调度请求,由于前面时刻已关闭队列0,\n1的调度请求,因此给队列2分配512B令牌,后面的步骤就同上面,旁路器bypass把剩余的令牌存储起来,待后续有新包入队,直接由旁路器bypass进行快速发放给QM,而不需经过调度模块的调度。\n[0084] 以上的例子就是一个调度器,旁路器bypass,QM相互协作的基于令牌调度的解决方法,能避免低优先级得不到服务的风险,同时能解决小包不线速的问题。\n[0085] 本发明实施例的有益效果在于,解决小包达不到线速问题,在特殊的场景下,通过bypass机制,能快速消耗掉上次调度剩余的credit,而不是再去占用调度器有限的调度时隙,这样,credit调度器能按较长时间调度一次,降低实现复杂度。同时,通过bypass机制,能有限降低数据包的延时,对于延时敏感的业务非常有利。\n[0086] Credit调度器的应用领域广泛,在队列数目较大,且调度频率要求较高的应用,就有可能采取credit调度器,credit调度器不像基于包的调度器那样对调度器的频率要求较高,但也存在调度不够精确的问题,合理的采取各种技术,比如反压,shaping等,能够较好的满足应用需求。\n[0087] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。\n[0088] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
法律信息
- 2012-08-08
- 2011-08-03
实质审查的生效
IPC(主分类): H04L 12/56
专利申请号: 201110036866.4
申请日: 2011.02.12
- 2011-06-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-06-02
|
2009-11-26
| | |
2
| |
2011-02-02
|
2010-11-05
| | |
3
| |
2007-05-30
|
2006-11-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |