发明内容
本发明实施例提供一种数据写入的方法、装置及系统,根据每个时隙内输入端口发送的请求信息和预设的双轮询规则为输入端口分配中间缓存,从而提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,进而减少数据帧丢失和读出冲突出现的概率。
为达到上述目的,本发明实施例采用的技术方案是,
第一方面,提供了一种数据写入的方法,该方法包括:
获取当前时隙内有数据传输需求的输入端口发送的请求信息;
在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存;
将所述第一中间缓存的标识信息发送给所述第一输入端口,以使得所述第一输入端口根据所述第一中间缓存的地址信息将数据写入所述第一中间缓存。
在第一种可能的实现方式中,根据第一方面,在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存,具体实现为:
在当前时隙内根据第一轮询规则获取所述第一输入端口,其中,所述第一轮询规则为:在所有输入端口预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的输入端口的下一个输入端口作为起点,选择当前时隙内排序最靠前的发送请求信息的输入端口作为第一输入端口;
在当前时隙内根据第二轮循规则获取所述第一中间缓存,其中,所述第二轮询规则为:在所有中间缓存预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的中间缓存的下一个中间缓存作为起点,选择当前时隙内排序最靠前的可用的中间缓存作为第一中间缓存,所述可用的中间缓存指所述中间缓存未满未写。
将所述第一中间缓存分配给所述第一输入端口。
在第二种可能的实现方式中,结合第一种可能的实现方式,优选的,所述中间缓存包含至少两个缓存区间,相应的,
在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存,包括:在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存中任意一个未满未写的缓存区间;
所述第一中间缓存的标识信息包括所述第一中间缓存的标识以及为所述第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
在第三种可能的实现方式中,结合第一方面或第一种可能的实现方式或第二种可能的实现方式任一项,该方法还包括:
若在当前时隙内未获取到所述输入端口发送的请求信息,则在当前时隙内不进行所述中间缓存的分配。
第二方面,提供了一种数据写入的方法,该方法包括:
有数据传输需求的输入端口在当前时隙内向双轮询器发送请求信息,以使得双轮询器在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存;
所述第一输入端口接收所述第一中间缓存的标识信息;
所述第一输入端口根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
在第一种可能的实现方式中,根据第二方面,所述有数据传输需求的输入端口在当前时隙内向双轮询器发送请求信息,具体实现为:
所述输入端口在当前时隙内检测到到达所述输入端口的数据帧的帧头部信息后,向所述双轮询器发送所述请求信息。
在第二种可能的实现方式中,结合第二方面或第一种可能的实现方式,该方法还包括:
所述中间缓存包含至少两个缓存区间,相应的,所述第一中间缓存的标识信息包括所述第一中间缓存的标识以及为所述第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
第三方面,提供了一种数据写入的装置,该数据写入装置包括:
获取单元,用于获取当前时隙内有数据传输需求的输入端口发送的请求信息,以及将所述请求信息发送给分配单元;
分配单元,用于从所述获取单元接收所述请求信息,以及在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存,以及将分配结果传输给发送单元;
发送单元,用于从所述分配单元接收所述分配结果,以及将所述第一中间缓存的标识信息发送给所述第一输入端口,以使得所述第一输入端口根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
在第一种可能的实现方式中,结合第三方面,分配单元具体实现为:
第一选择模块,用于在当前时隙内根据第一轮询规则选择所述第一输入端口,其中,所述第一轮询规则为:在所有输入端口预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的输入端口的下一个输入端口作为起点,选择当前时隙内排序最靠前的发送请求信息的输入端口作为第一输入端口;
第二选择模块,用于在当前时隙内根据第二轮循规则选择所述第一中间缓存,其中,所述第二轮询规则为:在所有中间缓存预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的中间缓存的下一个中间缓存作为起点,选择当前时隙内排序最靠前的可用的中间缓存作为第一中间缓存,所述可用的中间缓存指所述中间缓存未满未写;
分配模块,用于将所述第一中间缓存分配给所述第一输入端口。
在第二种可能的实现方式中,结合第一种可能的实现方式,优选的,所述中间缓存包含至少两个缓存区间,相应的,所述分配单元还用于:
在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存中任意一个未满未写的缓存区间;
所述第一中间缓存的标识信息包括所述第一中间缓存的标识以及为所述第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
在第三种可能的实现方式中,结合第三方面或第一种可能的实现方式或第二种可能的实现方式,分配单元还用于:
若在当前时隙内未接收到所述获取单元获取的所述输入端口发送的请求信息,则在当前时隙内不进行所述中间缓存的分配。
第四方面,提供了一种输入端口,该输入端口包括:
第一发送单元,用于在当前时隙内向双轮询器发送数据传输的请求信息,以使得双轮询器在当前时隙内根据所述请求信息和预设的双轮询规则为所述输入端口分配第一中间缓存,
接收单元,用于接收所述第一中间缓存的标识信息;
写入单元,用于根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
在第一种可能的实现方式中,结合第四方面,发送单元还用于:在当前时隙内检测到到达所述输入端口的数据帧的帧头部信息后,向所述双轮询器发送所述请求信息。
在第二种可能的实现方式中,结合第四方面或第一种可能的实现方式,优选的,所述中间缓存包含至少两个缓存区间,相应的,所述第一中间缓存的标识信息包括:
所述第一中间缓存的标识以及为所述输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
第五方面,提供了一种输入端口,该输入端口包括:输入端口缓存,用于在当前时隙内向双轮询器发送数据传输的请求信息,以使得双轮询器在当前时隙内根据所述请求信息和预设的双轮询规则为所述输入端口分配第一中间缓存,接收所述第一中间缓存的标识信息,根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
在第一种可能的实现方式中,结合第五方面,输入端口缓存还用于:
在当前时隙内检测到到达所述输入端口缓存的数据帧的帧头部信息后,向所述双轮询器发送所述请求信息。
在第二种可能的实现方式中,结合第五方面或第一种可能的实现方式,优选的,所述中间缓存包含至少两个缓存区间,相应的,所述第一中间缓存的标识信息包括:
所述第一中间缓存的标识以及为所述输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
第六方面,提供了一种数据写入系统,该数据写入系统包括:上述任一项所述的数据写入的装置,和上述任一项所述的输入端口。
本发明实施例提供一种数据写入的方法、装置及系统,根据输入端口发送的请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例可应用于基于SMS架构的交换机的数据写入的调度,也可应用于基于SMS架构的路由器的数据写入的调度,其原理和实现过程相同,本发明实施例以应用于基于SMS架构的光纤通道(Fibre Channel,简称FC)交换机的数据写入的调度为例进行说明。
本发明实施例分别从双轮询器侧和输入端口侧进行说明,并同时对二者的配合实施例进行说明,但这并不意味着二者必须配合实施,实际上,当双轮询器与输入端口分开实施时,其也解决了分别在双轮询器侧、输入端口侧上存在的问题,只是二者结合使用时,会获得更好的技术效果。
参见图1,为双轮询器侧的数据写入的方法流程示意图,如图所示,可以包括以下步骤:
101:获取当前时隙内有数据传输需求的输入端口发送的请求信息;
102:在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存;
示例性的,在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存,可以包括:
在当前时隙内根据第一轮询规则选择所述第一输入端口,其中,所述第一轮询规则为:在所有输入端口预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的输入端口的下一个输入端口作为起点,选择当前时隙内排序最靠前的发送请求信息的输入端口作为第一输入端口;
在当前时隙内根据第二轮循规则选择所述第一中间缓存,其中,所述第二轮询规则为:在所有中间缓存预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的中间缓存的下一个中间缓存作为起点,选择当前时隙内排序最靠前的可用的中间缓存作为第一中间缓存,所述可用的中间缓存指所述中间缓存未满未写;
将所述第一中间缓存分配给所述第一输入端口。
103:将所述第一中间缓存的标识信息发送给所述第一输入端口,以使得所述第一输入端口根据所述第一中间缓存的地址信息将数据写入所述第一中间缓存。
本发明实施例提供一种数据写入的方法,根据输入端口发送的请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
参见图2,为输入端口侧的数据写入的方法流程示意图,如图所示,可以包括以下步骤:
201:有数据传输需求的输入端口在当前时隙内向双轮询器发送请求信息,以使得双轮询器在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存;
示例性的,所述有数据传输需求的输入端口在当前时隙内向双轮询器发送请求信息,可以包括:所述输入端口在当前时隙内检测到到达所述输入端口的数据帧的帧头部信息后,向所述双轮询器发送所述请求信息。
202:所述第一输入端口接收所述第一中间缓存的标识信息;
203:所述第一输入端口根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
本实施例提供的数据写入的方法,输入端口通过向双轮询器发送请求信息,使得双轮询器根据所述请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
下面通过具体实施例对上述方法实施例进行说明,参见图3,包括:
301:当前时隙内所有有数据传输需求的输入端口分别向双轮询器发送请求信息;
示例性的,每个输入端口都包括一个输入端口缓存,例如,该输入端口缓存可以为先进先出(First In First Out,简称FIFO,)缓存,数据帧进入输入端口后,首先存储在该输入端口对应的输入端口缓存中,当该输入端口缓存检测到数据帧的头部信息后,会立即向双轮询器发送数据传输的请求信息;。
例如:假设一共有N个输入端口,当前时隙内有n个输入端口缓存检测到对应的n个输入端口有数据需要传输,那么,当前时隙内,该n个输入端口缓存分别向双轮询器发送一个请求信息。
302:双轮询器根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存;
参见图4,为双轮询器根据请求信息和预设的双轮询规则为输入端口分配中间缓存的示意图,双轮询器可以包括第一轮询器A和第二轮询器B。
示例性的,双轮询器为输入端口分配中间缓存的过程,可以包括以下步骤:
1、第一轮询器A在当前时隙内根据第一轮询规则选择第一输入端口;
示例性的,第一轮询规则可以为:在所有输入端口预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的输入端口的下一个输入端口作为起点,选择当前时隙内排序最靠前的发送请求信息的输入端口作为第一输入端口;第一轮询器A根据第一轮询规则对有数据传输需求的输入端口进行轮询,使得在多次调度中对每个输入端口传输数据的机会是公平的,避免了随机选择输入端口时可能造成输入端口的数据等待时间过长而丢失或损坏。下面结合图4对该过程进行详细说明。
例如:假设一共有N个输入端口,所有输入端口预设的排序为从1到N,参见图4,第一轮询器A将所有输入端口预设的排序构成一个循环,其中,输入端口预设的排序可以由多种方式确定,在此不进行限定,例如可以随机进行排序,也可以根据输入端口的地址进行排序,不论选定哪种方式,确定后的排序方式在轮询过程中不变,例如,本实施例中N个输入端口的排序方式为1、2、3......N、1、2、3......N......,当然排序方式在根据实际需要发生变化后,第一轮询器A可以将排序方式进行更新后再根据新的排序方式进行轮询。第一轮询器A可以采用圆循环的方式或者其他形式的循环方式,循环方向可以是逆时针方向或者顺时针方向,本实施例以圆形逆时针方向循环方式为例进行说明。
第一轮询器A可以选用指针或者其他形式来指示当前时隙被选中的输入端口,本实施例以指针为例进行说明。
假设当前时隙的上一相邻时隙指针指向输入端口1,在当前时隙内双轮询器接收到输入端口3、5、7发送的请求信息,那么,双轮询器将以输入端1的下一个输入端口(即输入端口2)作为起点,按照逆时针方向对该三个输入端口进行轮询,选择排序最靠前的发送请求信息的输入端口作为第一输入端口,即选择输入端口3作为第一输入端口,并将指针指向输入端口3。同理,进入下一个时隙后,第一轮询器A选择下一时隙内以输入端口4起点,排序最靠前的发送请求信息的输入端口作为第一输入端口。
优选的,若在当前时隙内没有输入端口发送请求信息,则在当前时隙内不进行中间缓存的分配,也即第一轮询器A的指针不发生改变。
2、第二轮询器B在当前时隙内根据第二轮循规则选择所述第一中间缓存;
示例性的,所述第二轮询规则为:在所有中间缓存预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的中间缓存的下一个中间缓存作为起点,选择当前时隙内排序最靠前的可用的中间缓存作为第一中间缓存,所述可用的中间缓存指所述中间缓存未满未写;第二轮询器B根据第二轮询规则对中间缓存进行轮询,使得在相邻时隙内到达的数据均匀分散在不同的中间缓存中,从而使得每个中间缓存的数据量是趋于均匀的,避免了随机选择中间缓存时可能造成每个中间缓存的数据不均匀而使数据丢失或发生读出冲突。下面结合图4对该过程进行详细说明。
例如:假设一共有M个中间缓存,所有预设的排序为从1到M,参见图4,第二轮询器B将所有中间缓存预设的排序构成一个循环,同理,中间缓存预设的排序可以由多种方式确定,在此不进行限定,例如可以随机进行排序,也可以根据中间缓存的地址进行排序,不论选定哪种方式,确定后的排序方式在轮询过程中不变,例如,本实施例中M个中间缓存的排序方式为1、2、3......M、1、2、3......M......,当然排序方式在根据实际需要发生变化后,第二轮询器B可以将排序方式进行更新后再根据新的排序方式进行轮询。第二轮询器B可以采用圆循环的方式或者其他形式的循环方式,循环方向可以是逆时针方向或者顺时针方向,本实施例以圆形逆时针方向循环方式为例进行说明。
第二轮询器B也可以选用指针或者其他形式来指示当前时隙被选中的中间缓存,本实施例以指针为例进行说明。
假设当前时隙的上一相邻时隙指针所指的方向是中间缓存1,当前时隙内共有三个中间缓存未满未写,分别为中间缓存4、5、7,那么,第二轮询器B将以中间缓存1的下一个中间缓存(即中间缓存2)作为起点,按照逆时针方向对该三个中间缓存进行轮询,选择排序最靠前的未满未写的中间缓存作为第一中间缓存,即选择4中间缓存作为第一中间缓存,并将指针指向中间缓存4。同理,进入下一个时隙后,第二轮询器B选择下一时隙内以中间缓存5为起点,排序最靠前的未满未写的中间缓存作为第一中间缓存。
3、将所述第一中间缓存分配给所述第一输入端口。
303、双轮询器将第一中间缓存的标识信息发送给第一输入端口;
例如,假设当前时隙内双轮询器选择的输入端口3作为第一输入端口,选择的中间缓存4作为第一中间缓存,那么,双轮询器将第一中间缓存的标识信息发送给第一输入端口,例如,第一中间缓存的标识信息可以用4或者第一输入端口的其他可识别的信息表示。
优选的,中间缓存可以包含至少两个缓存区间,其中每个区间可存一个最大帧。由于在光纤通道交换机中,流控策略采用信用值和回复RDY的方式,不容许丢帧且能够交换变长帧,因此中间缓存所能存储最大帧总数要和对应的端口信用值总数相同,这样才能够保证不丢帧,所以,中间缓存和缓存区间设定的个数可以根据对应的端口信用值总数设定。例如,本实施例中设定有N输入端口,每个输入端口分配信用值为8(每个输入端口最多可同时占用其中的8个缓存区间,即缓存8个帧),设定每个中间缓存划分为四个缓存区间,每个缓存区间可存一个最大帧,则N个输入端口需要(N×8)/4=2N个中间缓存,优选的,本实施例采用双端口中间缓存,可以实现在对中间缓存中的某个缓存区间进行写操作的同时可以对该中间缓存中的另一个缓存区间进行读操作,从而提高了吞吐率。
优选的,第二轮询器B根据第二轮循规则选择第一中间缓存时,可以同时选择第一中间缓存中的任意一个未满未写的缓存区间并分配给第一输入端口。例如,假设当前时隙内双轮询器选择的输入端口3作为第一输入端口,选择的中间缓存4作为第一中间缓存,该中间缓存中可用的缓存区间分别为缓存区间2和缓存区间4,双轮询器可以任意选择第一中间缓存中的缓存区间2和缓存区间4分配给第一输入端口。
优选的,第一中间缓存的标识信息可以包括第一中间缓存的标识以及为第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
例如,假设双轮询器选择第一中间缓存4中的缓存区间2分配给第一输入端口,那么,双轮询器将该中间缓存4和缓存区间2的标识信息发送给第一输入端口,例如,标识信息可以用“4(中间缓存号)+2(缓存区间号)”的形式或者该中间缓存4和缓存区间2的其他可识别信息表示。
304:第一输入端口根据第一中间缓存发送的第一中间缓存的标识信息将数据写入所述第一中间缓存;
优选的,第一输入端口还可以将第一中间缓存的标识信息写入第一中间缓存,第一中间缓存的标识信息可以包括第一中间缓存的标识以及为第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
优选的,第一输入端口可以将第一中间缓存的标识信息与待发送的数据同时写入第一中间缓存。
305:第一中间缓存将第一中间缓存的标识信息发送给对应的输出端口,以使得所述输出端口根据所述第一中间缓存的标识信息读取所述第一输入端口写入所述第一中间缓存中的数据。
示例性的,每个输入端口内都有帧信息,其中,该帧信息包括:组播帧信息和单播帧信息,经解析后用于获得该输入端口的数据要发送的输出端口的端口号信息,每个输入端口的帧信息可以根据交换机内设置的路由表信息获取。
示例性的,在接收到第一输入端口发送的第一中间缓存的标识信息后,第一中间缓存通过对该信息的解析获知第一输入端口数据存入的存储在所述第一中间缓存号以及存入的缓存区间号,再根据第一输入端口的帧信息解析出第一输入端口的数据要发送的输出端口号,并将第一中间缓存的标识信息发送给对应的输出端口,例如,可以将第一输入端口数据存入的中间缓存号以及存入的缓存区间号存入对应的输出端口的描述符队列中。
例如,输入端口1与中间缓存2匹配,并将数据存入中间缓存2的缓存区间3,且它的数据帧要去往输出端口4。中间缓存2会将中间缓存2及其缓存区间3的数据发送给输出端口4,例如,可以采用将数据“2(表示中间缓存号)+3(表示缓存区间号)”的形式存入到输出端口4的描述符信息FIFO队列中,当然也可以采用其他数据形式表示。
其中,每个输出端口有N个帧信息FIFO,可以表示为1号帧信息FIFO、2号帧信息FIFO、...、N号帧信息FIFO,它们分别对应N个输入端口,该N个FIFO中所存入的帧信息,分别表明输入端口的数据将要去往该输出端口。例如输入端口1来的数据,存入队列的1号帧信息FIFO,表示输入端口1提出请求有数据去往输出端口4。
示例性的,完成数据的写入后,各输出端口根据各自的描述符信息FIFO完成输出调度。其中,每个缓存在每个时隙内只能有一个数据帧被对应的输出端口读取,若同一个中间缓存中包含至少两个帧,且该至少两个帧来自不同的输入端口又去往不同的输出端口,那么输出端口调度时可能会出现读出冲突,此时需要对各输出端口进行读出冲突仲裁。可以采用随机、轮询或其他的方式进行读出冲突仲裁。例如,本实施例的每个中间缓存能够存4个最大帧,可能出现读出冲突,本实施例采用轮询的方式对输出调度进行仲裁,该方式可以保证在减小冲突的同时对交换架构的吞吐率影响较小。
本实施例提供的数据写入的方法,输入端口通过向双轮询器发送请求信息,使得双轮询器根据所述请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
另一方面,本发明实施例提供了一种数据写入的装置50,该数据写入的装置50可以配置于基于SMS架构的交换机内,应用于基于SMS架构的交换机的数据写入,也可配置于基于SMS架构的路由器内,应用于基于SMS架构的路由器的数据写入。参见图5-图6,该装置50可以包括:
获取单元501,用于获取当前时隙内有数据传输需求的输入端口发送的请求信息,以及将所述请求信息发送给分配单元502;
例如:假设一共有N个输入端口,当前时隙内有有数据需要传输需求的输入端口的个数为n个,输入端口缓存检测到对应的n个输入端口有数据需要传输,那么,当前时隙内获取单元501获取该n个输入端口分别发送的请求信息。
分配单元502,用于从所述获取单元501接收所述请求信息,以及在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存,以及将分配结果传输给发送单元503;
进一步的,参见图6,分配单元502可以包括:
第一选择模块5021,用于在当前时隙内根据第一轮询规则选择所述第一输入端口;
示例性的,所述第一轮询规则为:在所有输入端口预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的输入端口的下一个输入端口作为起点,选择当前时隙内排序最靠前的发送请求信息的输入端口作为第一输入端口;第一选择模块5021根据第一轮询规则对有数据传输需求的输入端口进行轮询,使得在多次调度中对每个输入端口传输数据的机会是公平的,避免了随机选择输入端口时可能造成输入端口的数据等待时间过长而丢失或损坏。下面结合图4对该过程进行详细说明。
例如:假设一共有N个输入端口,所有输入端口预设的排序为从1到N,参见图4,第一选择模块5021将所有输入端口预设的排序构成一个循环,其中,输入端口预设的排序可以由多种方式确定,在此不进行限定,例如可以随机进行排序,也可以根据输入端口的地址进行排序,不论选定哪种方式,确定后的排序方式在轮询过程中不变,例如,本实施例中N个输入端口的排序方式为1、2、3......N、1、2、3......N......,当然排序方式在根据实际需要发生变化后,第一选择模块5021可以将排序方式进行更新后再根据新的排序方式进行轮询。第一选择模块5021可以采用圆循环的方式或者其他形式的循环方式,循环方向可以是逆时针方向或者顺时针方向,本实施例以圆形逆时针方向循环方式为例进行说明。
第一选择模块5021可以选用指针或者其他形式来指示当前时隙被选中的输入端口,本实施例以指针为例进行说明。
假设当前时隙的上一相邻时隙指针指向输入端口1,在当前时隙内双轮询器接收到输入端口3、5、7发送的请求信息,那么,双轮询器将以输入端1的下一个输入端口(即输入端口2)作为起点,按照逆时针方向对该三个输入端口进行轮询,选择排序最靠前的发送请求信息的输入端口作为第一输入端口,即选择输入端口3作为第一输入端口,并将指针指向输入端口3。同理,进入下一个时隙后,第一选择模块5021选择下一时隙内以输入端口4为起点,排序最靠前的发送请求信息的输入端口作为第一输入端口。
优选的,若在当前时隙内没有输入端口发送请求信息,则在当前时隙内不进行中间缓存的分配,也即第一选择模块5021的指针不发生改变。
第二选择模块5022,用于在当前时隙内根据第二轮循规则选择所述第一中间缓存;
示例性的,所述第二轮询规则为:在所有中间缓存预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的中间缓存的下一个中间缓存作为起点,选择当前时隙内排序最靠前的可用的中间缓存作为第一中间缓存,所述可用的中间缓存指所述中间缓存未满未写;第二选择模块5022根据第二轮询规则对中间缓存进行轮询,使得在相邻时隙内到达的数据均匀分散在不同的中间缓存中,从而使得每个中间缓存的数据量是趋于均匀的,避免了随机选择中间缓存时可能造成每个中间缓存的数据不均匀而使数据丢失或发生读出冲突。下面结合图4对该过程进行详细说明。
例如:假设一共有M个中间缓存,所有预设的排序为从1到M,参见图4,第二选择模块5022将所有中间缓存预设的排序构成一个循环,同理,中间缓存预设的排序可以由多种方式确定,在此不进行限定,例如可以随机进行排序,也可以根据中间缓存的地址进行排序,不论选定哪种方式,确定后的排序方式在轮询过程中不变,例如,本实施例中M个中间缓存的排序方式为1、2、3......M、1、2、3......M......,当然排序方式在根据实际需要发生变化后,第二选择模块5022可以将排序方式进行更新后再根据新的排序方式进行轮询。第二选择模块5022可以采用圆循环的方式或者其他形式的循环方式,循环方向可以是逆时针方向或者顺时针方向,本实施例以圆形逆时针方向循环方式为例进行说明。
第二选择模块5022也可以选用指针或者其他形式来指示当前时隙被选中的中间缓存,本实施例以指针为例进行说明。
假设当前时隙的上一相邻时隙指针所指的方向是中间缓存1,当前时隙内共有三个中间缓存未满未写,分别为中间缓存4、5、7,那么,第二选择模块5022将以中间缓存1的下一个中间缓存(即中间缓存2)作为起点,按照逆时针方向对该三个中间缓存进行轮询,选择排序最靠前的未满未写的中间缓存作为第一中间缓存,即选择中间缓存4作为第一中间缓存,并将指针指向中间缓存4。同理,进入下一个时隙后,第二选择模块5022选择下一时隙内以中间缓存5为起点,排序最靠前的未满未写的中间缓存作为第一中间缓存。
分配模块5023,用于将所述第一中间缓存分配给所述第一输入端口。
优选的,所述中间缓存包含至少两个缓存区间,其中每个区间可存一个最大帧。由于在光纤通道交换机中,流控策略采用信用值和回复RDY的方式,不容许丢帧且能够交换变长帧,因此中间缓存所能存储最大帧总数要和对应的端口信用值总数相同,这样才能够保证不丢帧,所以,中间缓存和缓存区间设定的个数可以根据对应的端口信用值总数设定。例如,本实施例中设定有N输入端口,每个输入端口分配信用值为8(每个输入端口最多可同时占用其中的8个缓存区间,即缓存8个帧),设定每个中间缓存划分为四个缓存区间,每个缓存区间可存一个最大帧,则N个输入端口需要(N×8)/4=2N个中间缓存,优选的,本实施例采用双端口中间缓存,可以实现在对中间缓存中的某个缓存区间进行写操作的同时可以对该中间缓存中的另一个缓存区间进行读操作,从而提高了吞吐率。
优选的,第二选择模块5022根据第二轮循规则选择第一中间缓存时,可以同时选择第一中间缓存中的任意一个未满未写的缓存区间并分配给第一输入端口。例如,假设当前时隙内装置40选择的输入端口3作为第一输入端口,选择的中间缓存4作为第一中间缓存,该中间缓存中可用的缓存区间分别为缓存区间2和缓存区间4,该装置40可以任意选择第一中间缓存中的缓存区间2和缓存区间4分配给第一输入端口。
发送单元503,用于从所述分配单元502接收所述分配结果,以及将所述第一中间缓存的标识信息发送给所述第一输入端口,以使得所述第一输入端口根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
示例性的,所述第一中间缓存的标识信息包括所述第一中间缓存的标识以及为所述第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
例如,假设该装置50选择第一中间缓存4中的缓存区间2分配给第一输入端口,那么,该装置40将该中间缓存4的标识信息和缓存区间2的标识信息发送给第一输入端口。
本发明实施例提供的一种数据写入的装置50,根据输入端口发送的请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
图7-图8描述了本发明实施例提供的一种双轮询器70,该双轮询器70对应于由上述实施例提供的数据写入的装置50,该双轮询器70可以配置于基于SMS架构的交换机内,应用于基于SMS架构的交换机的数据写入,也可配置于基于SMS架构的路由器内,应用于基于SMS架构的路由器的数据写入。具体的,该双轮询器70包括:
接收器701,用于获取当前时隙内有数据传输需求的输入端口发送的请求信息,以及将所述请求信息发送给轮询器;
例如:假设一共有N个输入端口,当前时隙内有有数据需要传输需求的输入端口的个数为n个,输入端口缓存检测到对应的n个输入端口有数据需要传输,那么,当前时隙内接收器501获取该n个输入端口分别发送的请求信息。
轮询器702,用于从所述接收器接收所述请求信息,以及在当前时隙内根据所述请求信息和预设的双轮询规则为第一输入端口分配第一中间缓存,以及将分配结果传输给发送器;
进一步的,参见图8,轮询器702可以包括:
第一轮询器7021,用于在当前时隙内根据第一轮询规则选择所述第一输入端口;
示例性的,所述第一轮询规则为:在所有输入端口预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的输入端口的下一个输入端口作为起点,选择当前时隙内排序最靠前的发送请求信息的输入端口作为第一输入端口;第一轮询器7021根据第一轮询规则对有数据传输需求的输入端口进行轮询,使得在多次调度中对每个输入端口传输数据的机会是公平的,避免了随机选择输入端口时可能造成输入端口的数据等待时间过长而丢失或损坏。下面结合图4对该过程进行详细说明。
例如:假设一共有N个输入端口,所有输入端口预设的排序为从1到N,参见图4,第一轮询器7021将所有输入端口预设的排序构成一个循环,其中,输入端口预设的排序可以由多种方式确定,在此不进行限定,例如可以随机进行排序,也可以根据输入端口的地址进行排序,不论选定哪种方式,确定后的排序方式在轮询过程中不变,例如,本实施例中N个输入端口的排序方式为1、2、3......N、1、2、3......N......,当然排序方式在根据实际需要发生变化后,第一轮询器7021可以将排序方式进行更新后再根据新的排序方式进行轮询。第一轮询器7021可以采用圆循环的方式或者其他形式的循环方式,循环方向可以是逆时针方向或者顺时针方向,本实施例以圆形逆时针方向循环方式为例进行说明。
第一轮询器7021可以选用指针或者其他形式来指示当前时隙被选中的输入端口,本实施例以指针为例进行说明。
假设当前时隙的上一相邻时隙指针指向输入端口1,在当前时隙内双轮询器接收到输入端口3、5、7发送的请求信息,那么,双轮询器将以输入端口1的下一个输入端口(即1输入端口2)作为起点,按照逆时针方向对该三个输入端口进行轮询,选择排序最靠前的发送请求信息的输入端口作为第一输入端口,即选择输入端口3作为第一输入端口,并将指针指向输入端口3。同理,进入下一个时隙后,第一轮询器7021选择下一时隙内以输入端口4为起点,排序最靠前的发送请求信息的输入端口作为第一输入端口。
优选的,若在当前时隙内没有输入端口发送请求信息,则在当前时隙内不进行中间缓存的分配,也即第一轮询器7021的指针不发生改变。
第二轮询器7022,用于在当前时隙内根据第二轮循规则选择所述第一中间缓存;
示例性的,所述第二轮询规则为:在所有中间缓存预设的排序的循环方向上,在每个时隙内以上一相邻时隙选定的中间缓存的下一个中间缓存作为起点,选择当前时隙内排序最靠前的可用的中间缓存作为第一中间缓存,所述可用的中间缓存指所述中间缓存未满未写;第二轮询器7022根据第二轮询规则对中间缓存进行轮询,使得在相邻时隙内到达的数据均匀分散在不同的中间缓存中,从而使得每个中间缓存的数据量是趋于均匀的,避免了随机选择中间缓存时可能造成每个中间缓存的数据不均匀而使数据丢失或发生读出冲突。下面结合图4对该过程进行详细说明。
例如:假设一共有M个中间缓存,所有预设的排序为从1到M,参见图5,第二轮询器7022将所有中间缓存预设的排序构成一个循环,同理,中间缓存预设的排序可以由多种方式确定,在此不进行限定,例如可以随机进行排序,也可以根据中间缓存的地址进行排序,不论选定哪种方式,确定后的排序方式在轮询过程中不变,例如,本实施例中M个中间缓存的排序方式为1、2、3......M、1、2、3......M......,当然排序方式在根据实际需要发生变化后,第二轮询器7022可以将排序方式进行更新后再根据新的排序方式进行轮询。第二轮询器7022可以采用圆循环的方式或者其他形式的循环方式,循环方向可以是逆时针方向或者顺时针方向,本实施例以圆形逆时针方向循环方式为例进行说明。
第二轮询器7022也可以选用指针或者其他形式来指示当前时隙被选中的中间缓存,本实施例以指针为例进行说明。
假设当前时隙的上一相邻时隙指针所指的方向是中间缓存1,当前时隙内共有三个中间缓存未满未写,分别为:中间缓存4、中间缓存5、中间缓存7,那么,第二轮询器7022将以中间缓存1的下一个中间缓存(即中间缓存2)作为起点,按照逆时针方向对该三个中间缓存进行轮询,选择排序最靠前的未满未写的中间缓存作为第一中间缓存,即选择中间缓存4作为第一中间缓存,并将指针指向中间缓存4。同理,进入下一个时隙后,第二轮询器7022选择下一时隙内以中间缓存5为起点,排序最靠前的未满未写的中间缓存作为第一中间缓存。
处理器7023,用于将所述第一中间缓存分配给所述第一输入端口。
优选的,所述中间缓存包含至少两个缓存区间,其中每个区间可存一个最大帧。由于在光纤通道交换机中,流控策略采用信用值和回复RDY(Ready)的方式,不容许丢帧且能够交换变长帧,因此中间缓存所能存储最大帧总数要和对应的端口信用值总数相同,这样才能够保证不丢帧,所以,中间缓存和缓存区间设定的个数可以根据对应的端口信用值总数设定。例如,本实施例中设定有N输入端口,每个输入端口分配信用值为8(每个输入端口最多可同时占用其中的8个缓存区间,即缓存8个帧),设定每个中间缓存划分为四个缓存区间,每个缓存区间可存一个最大帧,则N个输入端口需要(N×8)/4=2N个中间缓存,优选的,本实施例采用双端口中间缓存,可以实现在对中间缓存中的某个缓存区间进行写操作的同时可以对该中间缓存中的另一个缓存区间进行读操作,从而提高了吞吐率。
优选的,第二轮询器7022根据第二轮循规则选择第一中间缓存时,可以同时选择第一中间缓存中的任意一个未满未写的缓存区间并分配给第一输入端口。例如,假设当前时隙内轮询器70选择输入端口3作为第一输入端口,选择中间缓存4作为第一中间缓存,该中间缓存中可用的缓存区间分别为缓存区间2和缓存区间4,该轮询器70可以任意选择第一中间缓存中的缓存区间2或缓存区间4分配给输入端口3。
发送器703,用于从所述轮询器702接收所述分配结果,以及将所述第一中间缓存的标识信息发送给所述第一输入端口,以使得所述第一输入端口根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
示例性的,所述第一中间缓存的标识信息包括所述第一中间缓存的标识以及为所述第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
例如,假设该双轮询器70选择第一中间缓存4中的缓存区间2分配给第一输入端口,那么,该双轮询器70将该第一中间缓存的标号4和缓存区间的标号2发送给第一输入端口。
本发明实施例提供的双轮询器70,,根据输入端口发送的请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
本发明实施例提供了一种输入端口90,该输入端口90可以配置于基于SMS架构的交换机内,应用于基于SMS架构的交换机的数据写入,也可配置于基于SMS架构的路由器内,应用于基于SMS架构的路由器的数据写入。参见图9,该输入端口90可以包括:
发送单元901,用于在当前时隙内向双轮询器发送数据传输的请求信息,以使得双轮询器在当前时隙内根据所述请求信息和预设的双轮询规则为所述输入端口分配第一中间缓存;
示例性的,第一发送单元901在当前时隙内检测到到达所述输入端口的数据帧的帧头部信息后,向所述双轮询器发送所述请求信息。
接收单元902,用于接收所述第一中间缓存的标识信息;
优选的,中间缓存可以包含至少两个缓存区间,其中每个区间可存一个最大帧。则第一中间缓存的标识信息可以包括第一中间缓存的标识以及为第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
写入单元903,用于根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
本实施例提供的一种输入端口90,通过向双轮询器发送请求信息,使得双轮询器根据所述请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
本发明实施例提供了另一种输入端口100,该输入端口100对应于由上述实施例提供的输入端口90,该输入端口100可以配置于基于SMS架构的交换机内,应用于基于SMS架构的交换机的数据写入,也可配置于基于SMS架构的路由器内,应用于基于SMS架构的路由器的数据写入。参见图10,该输入端口包括:
输入端口缓存1001,用于在当前时隙内向双轮询器发送数据传输的请求信息,以使得双轮询器在当前时隙内根据所述请求信息和预设的双轮询规则为所述输入端口分配第一中间缓存,接收所述第一中间缓存的标识信息,根据所述第一中间缓存的标识信息将数据写入所述第一中间缓存。
示例性的,每个输入端口都包括一个输入端口缓存,例如,该输入端口缓存可以为FIFO。
示例性的,数据帧进入输入端口后,首先存储在该输入端口对应的输入端口缓存中,输入端口缓存701在当前时隙内检测到到达输入端口缓存的数据帧的帧头部信息后,向双轮询器发送请求信息。
优选的,所述中间缓存包含至少两个缓存区间,其中每个区间可存一个最大帧,第一中间缓存的标识信息可以包括第一中间缓存的标识以及为第一输入端口分配的第一中间缓存中任意一个未满未写的缓存区间的标识。
本实施例提供的一种输入端口100,通过向双轮询器发送请求信息,使得双轮询器根据所述请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
再一方面,本实施例提供了一种数据写入系统,该数据写入系统可以为基于SMS架构的交换机,也可以为基于SMS架构的路由器。参见图11,该系统包括:上述实施例所述的任何一种数据写入装置或双轮询器,以及上述实施例所述的至少一个输入端口。
本发明实施例提供的一种数据写入的系统,根据输入端口发送的请求信息和预设的双轮询规则,为输入端口分配中间缓存,提高了每个输入端口传输数据的公平程度和相邻时隙内到达各中间缓存的数据帧均匀程度,从而减少数据帧丢失和读出冲突的概率,解决了现有技术中相邻时隙内到达各中间缓存的数据帧不均匀,从而造成数据帧丢失和读出冲突概率高的问题。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。