发明内容
本发明实施例的目的在于提供一种单播和多播集成调度装置、交换系统及方法,以提高系统吞吐率。
为解决上述问题,本发明实施例提供了一种单播和多播集成调度装置,包括流量监测模块和输入端口调度器,其中:
所述流量监测模块,用于定期监测输入端口中单播队列和多播队列的流量比例信息,并将所述单播队列和多播队列的流量比例信息发送给所述输入端口调度器;
所述输入端口调度器,用于获取输入端口流量中单播队列和多播队列的流量比例信息,根据所述输入端口流量中单播队列和多播队列的流量比例信息确定单播队列和多播队列的时间槽比例;并获取交叉点缓存的状态信息和信元调度请求信息;根据所述单播队列和多播队列的时间槽比例、交叉点缓存的状态信息和信元调度请求信息进行单播信元或多播信元调度。
本发明实施例还提供了一种单播和多播集成调度交换系统,包括所述单播和多播集成调度装置和交换芯片,所述交换芯片包括缓冲交叉开关交换结构和输出端口调度器;其中:
所述输出端口调度器,用于将所述缓冲交叉开关结构的交叉点缓存中的单播信元或者多播信元调度出所述缓冲交叉开关交换结构。
本发明实施例还提供了一种单播和多播集成调度方法,基于缓冲交叉开关交换结构,该方法包括:
所述输入端口调度器获取输入端口流量中单播队列和多播队列的流量比例信息,根据所述输入端口流量中单播队列和多播队列的流量比例信息确定单播队列和多播队列的时间槽比例;并获取交叉点缓存的状态信息和信元调度请求信息;
所述输入端口调度器根据所述单播队列和多播队列的时间槽比例、交叉点缓存的状态信息和信元调度请求信息将单播信元或多播信元调度入交叉点缓存。
本发明实施例提供的方法、装置和系统根据单播队列和多播队列的流量比例信息,动态地调整单播和多播调度时间槽的比例,使得单播队列和多播队列得到较为公平的服务,提高了系统的吞吐率。
具体实施方式
以下结合附图对本发明的一个实施例进行详细描述。
本发明提供一种单播和多播集成调度装置和交换系统,具体应用于如图1所示。该交换系统包括线卡101和交换芯片102。线卡101与交换芯片102相连。该线卡101与n个输入端口UQ对应,每个输入端口UQ对应一个线卡。每个线卡分别包括输入端口缓存103和集成调度装置104。或者,可以由集成调度装置104和交换芯片102组成交换系统。集成调度装置104包括流量监测模块107和输入端口调度器108。如图2所示,输入端口调度器108包括单播轮询转轮以及多播轮询转轮。单播轮询转轮用于实现单播轮询调度,单播轮询转轮包括流转轮和信元转轮,流转轮用于实现单播的流调度,信元转轮用于实现单播的信元调度;多播轮询转轮用于实现多播轮询调度。
交换芯片102包括CICQ结构105和输出端口调度器106。CICQ结构105的每个交叉点包括交叉点缓存XP。该输出端口调度器106与n个输出端口对应,每个输出端口对应一个输出端口调度器。如图3所示,每个输出端口调度器包括流转轮和信元转轮,流转轮用于实现流调度,信元转轮用于信元调度。
如图4所示,在输入端口缓存103中建立对应各输出端口的单播队列(UQ)和多播队列(MQ),所述单播队列采用VOQ(Virtual Output Queued)技术入队。已建立的单播队列和多播队列的所有队头信元向集成调度装置104中的输入端口调度器108发送信元调度请求信息;集成调度装置104将输入端口缓存103中的单播队列和/或多播队列(MQ)的信元调度进交换芯片102上的CICQ结构105内的交叉点缓存XP中;CICQ结构105上的交叉点缓存XP接收到集成调度装置104调度出的单播信元和/或多播信元,并将交叉点缓存XP是否阻塞的状态信息反馈给集成调度装置104上的输入端口调度器108;集成调度装置104上的流量监测模块107用于定期监测输入端口流量信息中单播队列和多播队列的流量比例信息,并将监测到的输入端口流量信息中单播队列和多播队列的流量比例信息发送给输入端口调度器108;输入端口调度器108则接收流量监测模块107发送的单播队列和多播队列的流量比例信息,以确定单播队列和多播队列时间槽的比例;并接收所述交叉点缓存状态信息和所述信元调度请求信息,并根据所述单播队列和多播队列的时间槽比例进行单播信元或多播信元的调度。即将单播队列或者多播队列信元调度至交叉点缓存XP中,并缓存等待的多播或者单播信元调度请求;输出端口调度器106用于将交叉点缓存XP中的单播信元或者多播信元调度出交换芯片102。
本发明实施例还提供一种单播和多播集成调度方法,该方法的一种应用场景如图1所示。如图5所示,该方法包括:
步骤401:建立单播队列和多播队列。
步骤402:定期监测输入端口流量中单播队列和多播队列的流量比例信息,并将所述单播队列和多播队列的流量比例信息发送给输入端口调度器;该监测具体可以由线卡中的流量监测模块来实现,也可以由其他设备或模块来实现。
步骤403:输入端口调度器根据所述步骤402监测的输入端口流量中单播队列和多播队列流量比例信息,确定单播队列和多播队列的时间槽比例。
步骤404:将交换芯片中交叉点缓存的状态信息(交叉点缓存是否阻塞)发给输入端口调度器;该交叉缓存点的缓存状态信息可以由流控或数据信元发给输入端口调度器。
步骤405:所述步骤401的单播队列和多播队列的所有队头信元向输入端口调度器发送信元调度请求信息。
步骤406:输入端口调度器接收所述步骤404发送的交叉点缓存状态信息和所述步骤405发送的信元调度请求信息,并根据所述步骤403决定的时间槽比例进行单播信元或多播信元的调度。优选地,可以同时缓存等待的多播队列或单播队列的调度请求。
步骤407:交叉点缓存接收单播信元或者多播信元。
步骤408:输出端口调度器将交叉点缓存中的单播信元或者多播信元调度出交换芯片。
所述步骤402、404、405无先后执行顺序,只要在步骤406之前完成即可。
所述步骤401中建立多播队列包括:当多播信元进入k个多播队列时(k为大于等于1的自然数)时,根据k和多播信元的扇出数(全文用fanout表示)将该多播信元分段,将扇出数小于k的多播信元作为第一段(fanout<k),将扇出数大于或等于k且小于2k的多播信元作为第二段(k≤fanout<2k),以此类推。从输入端口i(i为大于等于1的自然数)进入的多播信元,如果属于第一段则进入MQi,m队列,其中m=fanout mod k,即m为扇出数除以k后的余数(取模运算);属于第n段的多播信元则入MQi,p队列,其中p=(fanout+n-1)mod k(n为大于等于1的自然数),即p为对扇出数加n减1后的取模运算值。这种入队方式能保证相同的多播信元入同一队列,防止乱序的发生;不同的多播信元也可能入同一队列,保证了入队的队头信元的多样性。
所述步骤403具体可以为,输入端口调度器接收步骤402中流量监测模块发送的单播队列和多播队列的流量比例信息,据此确定单播队列和多播队列的时间槽比例。
所述步骤406中,当调度时间槽为单播优先调度时,所述单播优先调度如图6所示,具体包括:
输入端口调度器从单播流转轮指针所指位置开始查找非空单播队列。如果流转轮指针所指位置的单播队列为空,流转轮指针移至下一单播队列。如果流转轮指针遍历所有队列后仍未找到非空单播队列,则可插入多播调度。若找到非空单播队列,而且此时交叉点缓存没有被阻塞,则流转轮指针保持指向,将队头信元置位1bit(置1),将流交换标志发往相应的交叉点,实现流调度;如果此时交叉点缓存被阻塞,流转轮指针保持不变,使用信元转轮指针按照轮询方式寻找下一个非空的单播队列。如果找到下一个非空单播队列,则将该单播队头信元复位1bit(置0),将流交换标志发往相应的交叉点,并将信元转轮指针指向下一位置;如果没找到,信元转轮指针保持指向。在单播时间槽内,如果没有一个非空VOQ队列被流转轮和信元转轮选中,则可插入多播调度。
所述步骤406中,当调度时间槽为多播优先调度时,所述多播优先调度如图7所示,具体包括:
输入端口调度器从多播转轮指针所指位置开始查找多播队列的队头信元,并计算权重w。权重w为等待时间参数值减去扇出参数值。即{w|w=A*age-B*fanout},其中A为信元等待时间影响因子,B为信元扇出数影响因子,age为信元等待时间,fanout为多播信元的扇出数,等待时间参数值为等待时间影响因子A和信元等待时间age的乘积,扇出参数值等于信元扇出数影响因子B和多播信元的扇出数fanout的乘积。
如果各队列的队头信元权重w相同,则根据多播转轮指针所指位置对相应的信元进行调度服务,并根据交叉点缓存的状态和该信元是否完成多播拆分的状态决定多播转轮指针指向该队列位置或下一队列的位置,具体包括:若交叉点缓存没有被阻塞,则根据多播转轮指针所指位置调度相应的信元,进行多播信元拆分转发。若队头信元完成多播拆分,则多播转轮指针指向该队列的下一位置,此时若多播转轮已经完全遍历队列,则插入单播调度,若未完全遍历队列,则对多播转轮指针此时所指位置的相应信元进行调度服务;若队头信元未完成多播拆分,则多播转轮指针保持指向。
若交叉点缓存被阻塞,则多播转轮指针指向该队列的下一位置,此时若多播转轮已经完全遍历队列,则插入单播调度,若未完全遍历队列,则对多播转轮指针此时所指位置的相应信元进行调度服务。
如果各队列的队头信元权重w不相同,则对权重w最大的队列进行调度服务,并根据交叉点的状态和该信元多播是否完成多播拆分的状态决定多播转轮指针指向该队列位置或该队列的下一位置,具体包括:若交叉点缓存没有被阻塞,则调度服务该权重最大的信元,进行多播信元拆分转发。当队头信元完成多播拆分,多播转轮指针指向该队列的下一位置,此时若多播转轮已经遍历队列一遍,则插入单播调度,若未遍历队列一遍,则对剩余队列进行权重计算比较,若权重不相同,则对权重最大的队列进行调度服务,若权重相同,则对多播转轮指针此时所指位置的相应信元进行调度服务;若队头信元未完成多播拆分,则保持不变。
若交叉点缓存被阻塞,将多播转轮指针指向该队列下一位置,此时若多播转轮已经遍历队列一遍,则插入单播调度,若未遍历队列一遍,则对剩余队列进行权重计算比较,若权重不相同,则对权重最大的队列进行调度服务,若权重相同,则对多播转轮指针此时所指位置的相应信元进行调度服务。
如果在多播时间槽内,多播调度没有成功,则进行单播调度,此时单播从信元转轮所指位置进行轮询调度。
所述步骤408的调度方法具体包括:
如图8所示,输入端口调度器先从流转轮指针所指位置开始查找待调度信元,如果流转轮指针所指位置信元流标志为1,则调度该信元出输出端口,同时保持流转轮指针不变;如果流转轮指针所指位置信元流标志为0,则查找下一个流标志为1的信元并调度,流转轮指针移到相应位置。如果流转轮没有找到流标志位为1的信元,使用信元转轮进行轮询调度,并将信元转轮指针移到下一位置。
通过上述实施例的介绍,可知本发明实施例采用了简单可行的单播和多播入队方法,各线卡动态调整单播队列和多播队列的时间槽比例,增加了系统吞吐率。单、多播集成调度装置采用简单的轮询调度,硬件实现简单,具有较好的可扩展性;可实现流调度,增大突发流量下系统的吞吐率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。