本申请要求对2013年9月6日提交的美国发明申请号No.14/020,121的优先权,以及2012年9月10日提交的美国临时申请号No.61/699,154的权益。上面所引用的申请的全部公开内容通过引用并入本文。
发明内容
一种接入系统被提供并且包括线路卡和交叉开关模块。这些线路卡包括第一线路卡和第二线路卡。第一线路卡包括:物理层模块,被配置为接收第一分组,以及第一接口控制模块,被配置为生成用以传送该第一分组的第一请求信号。该第一请求信号包括第二线路卡中的第二接口控制模块的标识符。这些交叉开关模块从这些线路卡分离并且包括第一交叉开关模块和第二交叉开关模块。第一交叉开关模块包括第一调度器模块。第二交叉开关模块被配置为在这些线路卡中的一对线路卡之间传送分组。这些分组包括该第一分组。第一调度器模块从这些线路卡分离并且被配置为,基于第一请求信号,来调度该第一分组或这些分组从第一接口控制模块通过第二交叉开关模块并且向第二接口控制模块的传送。
在其他特征中,交叉开关模块中的每个交叉开关模块被分配给线路卡中的相应的一个或多个线路卡对。交叉开关模块中的每个交叉开关模块不被分配给线路卡中的与交叉开关模块中的其他交叉开关模块相同的线路卡对。
在其他特征中,第二交叉开关模块被配置为,调度分组通过交叉开关模块中的每个交叉开关模块的传送。
在其他特征中,第一线路卡或第一接口控制模块被配置为,将第一请求信号传输给第一交叉开关模块。第一交叉开关模块被配置为,将第一请求信号传输给第一调度器模块。
在其他特征中,交叉开关模块中的第一一个或多个交叉开关模块被分配用于对分组的调度。交叉开关模块中的该第一一个或多个交叉开关模块包括该第一交叉开关模块;交叉开关模块中的第二一个或多个交叉开关模块被分配用于在线路卡中的线路卡对之间传送分组。交叉开关模块中的该第二一个或多个交叉开关模块包括该第二交叉开关模块。交叉开关模块中的该第一一个或多个交叉开关模块调度分组通过交叉开关模块中的该第二一个或多个交叉开关模块的传送。
在其他特征中,第一线路卡或第一接口控制模块中的至少一个被配置为(i)生成用以将该第一分组从该第一线路卡传送给该第二线路卡或该第二接口控制模块中的至少一个的第一请求信号,以及(ii)将第一请求信号传输给该调度器模块;该调度器模块被配置为传输第一确认信号,该第一确认信号指示交叉开关模块中的将通过其来传递第一分组的第一一个或多个交叉开关模块。第一线路卡或第一接口控制模块中的至少一个被配置为,响应于第一确认信号,经由交叉开关模块中的第一一个或多个交叉开关模块,将第一分组传输给第二线路卡和第二接口控制模块中的至少一个。
在其他特征中,第一线路卡或第一接口控制模块中的至少一个被配置为,响应于第一确认信号将头部附加在第一分组上。该头部向交叉开关模块中的第一一个或多个交叉开关模块指示第二线路卡的标识符或第二接口控制模块的标识符中的至少一个。交叉开关模块中的第一一个或多个交叉开关模块根据该头部来传送第一分组。
在其他特征中,该头部包括(i)交叉开关模块中的第一一个或多个交叉开关模块中的交叉开关模块的标识符,或者(ii)交叉开关模块中的第一一个或多个交叉开关模块中的交叉开关模块的链路的标识符。
在其他特征中,第一接口控制模块被配置为,在对第一请求信号的传输之后:生成用以将第一一个或多个分组集合从第一接口控制模块传送给一个或多个接口控制模块的第二请求信号,其中该一个或多个接口控制模块在线路卡中的相应线路卡上;以及将第二请求信号传输给调度器模块。调度器模块被配置为传输第二确认信号,该第二确认信号指示交叉开关模块中的将通过其来传递第一一个或多个分组集合的第二一个或多个交叉开关模块。
在其他特征中,交叉开关模块中的第一一个或多个交叉开关模块被配置为,将第一分组从第一线路卡传送给第二线路卡。
在其他特征中,交叉开关模块中的第二一个或多个交叉开关模块被配置为,将该第一一个或多个分组集合从第一线路卡传送给第二线路卡。
在其他特征中,交叉开关模块中的第一一个或多个交叉开关模块包括:第一机架的第一交叉开关模块;第二机架的第二交叉开关模块,其中第二交叉开关模块被配置为,将第一分组和第一一个或多个分组集合从第一线路卡传送给第一交叉开关模块;以及第三机架的第三交叉开关。第三交叉开关被配置为,将第一分组和第一一个或多个分组集合从第一交叉开关模块传送给第二线路卡。
在其他特征中,第一线路卡被配置为经由第三交叉开关模块将第一请求信号发送给调度器模块。交叉开关模块中的第一一个或多个交叉开关模块和交叉开关模块中的第二一个或多个交叉开关模块不包括该第三交叉开关模块。
在其他特征中,调度器模块被配置为生成用以包括用于交叉开关模块中的第一一个或多个交叉开关模块的标识符的第一确认信号。用以包括用于交叉开关模块中的第二一个或多个交叉开关模块的标识符的第二确认信号。
在其他特征中,第一线路卡或第一接口控制模块中的至少一个被配置为,响应于第二确认信号,将第二一个或多个分组集合替代第一一个或多个分组集合传送给交叉开关模块中的一个或多个交叉开关模块。第二一个或多个分组集合具有比第一一个或多个分组集合高的优先级级别。
在其他特征中,第一线路卡被配置为,一次将完整的分组传送给交叉开关模块中所指配的一个交叉开关模块;并且该第一分组是完整的分组。
在其他特征中,第一线路卡或第一接口控制模块中的至少一个被配置为,(i)生成用以将第一分组从第一线路卡传送给第二线路卡或第二接口控制模块中的至少一个的第一请求信号,以及(ii)将第一请求信号传输给该调度器模块。第一线路卡或第一接口控制模块中的至少一个被配置为,在对第一请求信号的传输之后:生成用以将一个或多个分组集合从第一接口控制模块传送给第二接口控制模块或第三接口控制模块的第二请求信号,其中第三接口控制模块在第三线路卡上;以及(ii)将第二请求信号传输给该调度器模块。该一个或多个分组集合不包括该第一分组。第一线路卡被配置为将释放信号发送给调度器模块,其中该释放信号指示该第一分组和该一个或多个分组集合的总大小。调度器模块被配置为(i)丢弃第一请求信号,以及(ii)传输确认信号,该确认信号指示交叉开关模块中的将通过其来传递该一个或多个分组集合的一个或多个交叉开关模块。第一线路卡被配置为,基于该确认信号,传输该第一分组和该一个或多个分组集合。
在其他特征中,调度器模块被配置为(i)为第一分组选择交叉开关模块,以及(ii)生成确认信号。该确认信号包括(i)用于所选择的交叉开关模块的链路标识符,以及(ii)用于第二接口控制模块的链路标识符。第一接口控制模块被配置为,基于所选择的交叉开关模块的链路标识符,将第一分组转发给所选择的交叉开关模块;并且所选择的交叉开关模块被配置为,基于第二接口控制模块的链路标识符,将第一分组转发给第二接口控制模块。
在其他特征中,交叉开关模块包括队列。该调度器模块被配置为(i)存储用于这些队列的状况值,以及(ii)基于这些状况值,指配用于分组的链路标识符。这些链路标识符包括交叉开关模块中的一个或多个交叉开关模块和线路卡中的一个或多个线路卡的标识符。
在其他特征中,线路卡被配置为生成用以经由交叉开关模块来传送数据的请求信号。该调度器模块被配置为防止交叉开关模块的链路被用于用以传送第一数据量的请求信号,直到用以传送第二数据量的请求信号已经被满足。第一数据量小于完整的分组集合中的数据量。第二数据量大于或等于完整的分组集合中的数据量。
在其他特征中,该接入系统进一步包括第二调度器模块。第一调度器模块和第二调度器模块被指配给(i)相应的交叉开关模块,以及(ii)线路卡的相应接口控制模块。
在其他特征中,被指配给第一调度器模块的交叉开关模块包括:连接至第一线路卡的第一交叉开关模块;连接至第二线路卡的第二交叉开关模块;以及连接在被指配给第一调度器模块的第一交叉开关模块与被指配给第一调度器模块的第二交叉开关模块之间的第三交叉开关模块。被指配给第二调度器模块的交叉开关模块包括:连接至第三线路卡的第四交叉开关模块;连接至第四线路卡的第五交叉开关模块;以及连接在第四交叉开关模块与第五交叉开关模块之间的第六交叉开关模块。
在其他特征中,交叉开关模块中的一个交叉开关模块被配置为,(i)确定交叉开关模块中的该一个交叉开关模块中的队列的填充水平,(ii)响应于该队列的该填充水平不同于预定水平,将第一状况消息发送给第二线路卡或第二接口控制模块中的至少一个。该预定水平是以下各项中的至少一项:(i)等于调度器模块中存储的状况值,或者(ii)基于与第一请求信号相对应的一个或多个分组集合的大小来设置。第二线路卡或第二接口控制模块中的至少一个被配置为以下各项中的一项:(i)将第一状况消息转发给调度器模块,或者(ii)基于第一状况消息来生成第二状况消息并且将第二状况消息传输给调度器模块。调度器模块被配置为基于第一状况消息或第二状况消息来调整该状况值。
在其他特征中,调度器模块被配置为:从线路卡中的一个或多个线路卡接收一个或多个第一请求信号,其中第一请求信号中的每个第一请求信号用于非完整的分组集合,并且其中完整的分组集合具有预定数目的分组;在接收到该一个或多个第一请求信号之后,从线路卡中的一个或多个线路卡接收一个或多个第二请求信号,其中该一个或多个第二请求信号中的每个第二请求信号用于一个或多个完整的分组集合;以及在调度对非完整的分组集合的传送之前,调度该一个或多个完整的分组集合从线路卡中的该一个或多个线路卡到交叉开关模块的传送。
在其他特征中,调度器模块包括:第一裁剪模块,被配置为(i)确定是否存在可用的交叉开关模块用于第一请求信号,以及(ii)如果存在可用的交叉开关,则转发第一请求信号;第二裁剪模块,被配置为(i)确定是否存在可用的交叉开关模块用于第二请求信号,以及(ii)如果存在可用的交叉开关,则转发第二请求信号;以及至少一个仲裁模块,被配置为对第一请求信号和第二请求信号进行仲裁,包括选择将从该至少一个仲裁模块转发第一请求信号和第二请求信号的顺序。
在其他特征中,调度器模块包括:过滤器,被配置为提交针对第一请求信号的确认信号并且丢弃第二请求信号。
在其他特征中,调度器模块包括:裁剪模块、第一仲裁模块和第二仲裁模块、以及确认模块。这些裁剪模块被配置为(i)监测队列的状态,其中这些队列存储用于线路卡中的一个或多个线路卡的请求信号,(ii)确定是否存在一个或多个可用的交叉开关模块用于这些请求信号,以及(iii)当存在一个或多个可用的交叉开关模块时,转发这些请求信号。第一仲裁模块被配置为对请求信号进行仲裁,包括选择从该第一仲裁模块转发这些请求信号的顺序。第二仲裁模块被配置为对请求信号进行仲裁,包括选择从该第二仲裁模块转发这些请求信号的顺序。确认模块被配置为(i)从第二仲裁模块接收这些请求信号,(ii)基于这些请求信号来生成确认信号,以及(iii)将这些确认信号转发给线路卡的相应接口控制模块。
在其他特征中,这些裁剪模块被配置为,按第一顺序将请求信号转发给第一仲裁模块。第一仲裁模块被配置为,按第二顺序将请求信号转发给第二仲裁模块。第二仲裁模块被配置为,按该第一顺序将请求信号转发给确认模块。
在其他特征中,这些裁剪模块被配置为,按第一顺序将请求信号转发给第一仲裁模块。第一仲裁模块被配置为,按第一随机顺序将请求信号转发给第二仲裁模块。第二仲裁模块被配置为,按第二随机顺序将请求信号转发给确认模块。
在其他特征中,第一接口控制模块被配置为(i)聚合第二分组,(ii)生成用于第二分组的第二请求信号,以及(iii)将第二请求信号转发给调度器模块。调度器模块被配置为,响应于第二请求信号来生成确认信号。第一线路卡被配置为,响应于该确认信号,将第二分组转发给第二线路卡。
在其他特征中,第一线路卡被配置为,当第二分组被转发给交叉开关模块中的一个或多个交叉开关模块时,将释放信号传输给调度器模块。该释放信号指示这些第二分组的总大小。调度器模块被配置为,基于该释放信号来跟踪交叉开关模块中的该一个或多个交叉开关模块的状态。
在其他特征中,调度器模块被配置为:从第一线路卡接收用于分组的请求信号;生成用于这些请求信号的单个确认信号;以及将用于这些请求信号的该确认信号传输给第一线路卡。
在其他特征中,线路卡、调度器模块、以及交叉开关模块中的一个交叉开关模块中的第一之一包括:介质接入控制模块、第一消息模块和物理层模块。介质接入控制模块被配置为,基于该第一分组来生成控制信号和数据信号中的一个信号。该数据信号包括该第一分组。第一消息模块被配置为,将控制消息插入到该控制信号和该数据信号中的一个信号中。物理层模块被配置为,将该控制信号和该数据信号中的该一个信号传输给线路卡、调度器模块、以及交叉开关模块中的一个交叉开关模块中的第二之一。线路卡、调度器模块、以及交叉开关模块中的一个交叉开关模块中的该第二之一包括:第二物理层模块,被配置为接收该控制信号和该数据信号中的该一个信号,以及第二消息模块。第二消息模块被配置为(i)从该控制信号和该数据信号中的该一个信号中移除该控制消息,以及(ii)将不具有该控制消息的该控制信号和该数据信号中的该一个信号转发给第二介质接入控制模块。
在其他特征中,线路卡包括第三线路卡。该第三线路卡被配置为:接收第二分组,其中该第二分组大于该第一分组;确定该第二分组的大小将大于预定大小;将该第二分组拆分为至少第一部分和第二部分;生成用于该第二分组的该第一部分的第二请求信号;以及生成用于该第二分组的该第二部分的第三请求信号。调度器模块被配置为,(i)基于该第一分组来生成第一确认信号,(ii)基于该第二分组的该第一部分来生成第二确认信号,以及(iii)基于该第二分组的该第二部分来生成第三确认信号。第一线路卡被配置为,基于该第一确认信号来转发该第一分组。该第二线路卡被配置为(i)基于该第二确认信号来转发该第二分组的该第一部分,以及(ii)基于该第三确认信号来转发该第二分组的该第二部分。
在其他特征中,该第二线路卡被配置为:在接收到该第二分组的该第一部分之前,接收该第二分组的该第二部分;以及重排序并重组装(i)该第二分组的该第一部分,以及(ii)第二分组的该第二部分。
在其他特征中,交叉开关模块中的一个交叉开关模块被配置为,将单播分组交织在多播分组中。
在其他特征中,交叉开关模块中的该一个交叉开关模块被配置为,在接收到这些单播分组之前,接收该多播分组的第一部分。
在其他特征中,调度器模块被配置为,基于多播分组在链路上的传输,来延迟单播分组在该链路上的传输。该链路(i)在该第一线路卡与交叉开关模块中的一个交叉开关模块之间,或者(ii)在交叉开关模块中的该一个交叉开关模块与该第二线路卡之间。
在其他特征中,交叉开关模块中的一个交叉开关模块被配置为,(i)存储所接收的多播分组,以及(ii)一次在一个链路上传输这些多播分组中的一个多播分组。
在其他特征中,调度器模块被配置为(i)调度并跟踪单播分组在线路卡与交叉开关模块之间的传输,以及(ii)跟踪多播分组在线路卡与交叉开关模块之间的传输。调度器模块不调度多播分组的传输。
在其他特征中,第一线路卡被配置为生成用以调度这些分组的传输的第一请求信号。第一调度器模块被配置为,基于该第一请求信号,(i)调度这些分组,以及(ii)生成确认信号。第一线路卡被配置为,基于该确认信号,(i)传输这些分组,以及(ii)生成指示这些分组的总大小的释放信号。第一线路卡被配置为(i)基于该释放信号来调整该接入系统中的链路上的流量的状况值,以及(ii)基于这些状态值来调度没有被包括在这些分组中的分组的传输。
在其他特征中,一种调度器模块被提供并且包括请求模块,该请求模块包括队列。该请求模块被配置为(i)从第一一个或多个线路卡接收请求信号,以及(ii)将这些请求信号存储这些队列中。核心模块被配置为,调度与这些请求信号相对应的分组从第一一个或多个线路卡通过一个或多个交叉开关模块向第二一个或多个线路卡的传送。链路状态模块被配置为监测(i)第一一个或多个线路卡与该一个或多个交叉开关模块之间的第一链路的第一状态,以及(ii)该一个或多个交叉开关模块与第二一个或多个线路卡之间的第二链路的第二状态。调度器模块被配置为(i)基于这些第一链路的状态和这些第二链路的状态,来调度这些分组在这些第一链路和这些第二链路中的所指配的链路上的传送,以及(ii)基于这些请求信号,来生成识别所指配的一个或多个第一链路和第二链路的一个或多个确认信号。
在其他特征中,调度器模块包括:队列状态模块,被配置为(i)监测这些队列的状态,以及(ii)生成指示请求信号存在于这些队列中的一个队列中的第一状态信号;裁剪模块,被配置为(i)从链路状态模块接收链路可用性信号,(ii)从队列状态模块接收该第一状态信号,以及(iii)基于该链路可用性信号来转发这些请求信号中的一个或多个请求信号;至少一个仲裁模块,被配置为(i)接收这些请求信号中的该一个或多个请求信号,(ii)将这些请求信号中的该一个或多个请求信号匹配至可用的链路以生成匹配;以及确认模块,被配置为(i)接收这些匹配,以及(ii)基于这些匹配来生成一个或多个确认信号。
在其他特征中,该至少一个仲裁模块包括:第一仲裁模块,被配置为对这些请求信号进行仲裁并且生成第一匹配,以及与该第一仲裁模块并行连接的第二仲裁模块。第二仲裁模块被配置为对这些请求信号进行仲裁并且生成第二匹配。确认模块包括过滤器。该过滤器被配置为(i)确定这些第一匹配中的一个第一匹配与这些第二匹配中的一个第二匹配是否对应于相同的请求信号,(ii)丢弃该第二匹配,(ii)提交该第一匹配,以及(iv)基于该第一匹配来生成确认信号。
在其他特征中,一种接入系统被提供并且包括线路卡和交叉开关模块。这些线路卡中的第一线路卡被配置为(i)接收分组,以及(ii)基于这些分组,生成请求信号。这些交叉开关模块与这些线路卡分离。这些交叉开关模块包括第一交叉开关模块和第二交叉开关模块。该第一交叉开关模块包括调度器模块。该第二交叉开关模块被配置为,在这些线路卡中的一对线路卡之间传送这些分组。该调度器模块被配置为调度这些分组的传送。该调度器模块包括队列,这些队列被配置为存储针对这些线路卡中的一个或多个线路卡的请求信号。至少一个裁剪模块被配置为(i)监测这些队列的状态,(ii)确定是否存在一个或多个可用的交叉开关模块用于这些请求信号,以及(iii)当存在一个或多个可用的交叉开关模块时,转发这些请求信号。至少一个仲裁模块被配置为对这些请求信号进行仲裁,包括选择从该至少一个仲裁模块转发这些请求信号的顺序。确认模块被配置为(i)从该至少一个仲裁模块接收这些请求信号,(ii)基于这些请求信号来生成至少一个确认信号,以及(iii)将该至少一个确认信号转发给线路卡中的除了该第一线路卡之外的一个或多个线路卡。
在其他特征中,这些请求信号包括第一请求信号和第二请求信号。该确认模块包括过滤器,该过滤器被配置为:确定该第一请求信号是否与该第二请求信号相冗余;如果该第一请求信号是冗余的,则丢弃该第一请求信号并且生成针对该第二请求信号的确认信号;以及将该第二请求信号转发给线路卡中的一个线路卡。
在其他特征中,该至少一个仲裁模块包括:第一仲裁模块,被配置为对这些请求信号进行仲裁,包括选择从该第一仲裁模块转发这些请求信号的顺序;以及第二仲裁模块,被配置为对这些请求信号进行仲裁,包括选择从该第二仲裁模块转发这些请求信号的顺序。
在其他特征中,一种接入系统被提供并且包括线路卡和交叉开关模块。这些线路卡中的一个线路卡被配置为接收分组。这些交叉开关模块与这些线路卡分离。这些交叉开关模块包括第一交叉开关模块和第二交叉开关模块。该第一交叉开关模块包括调度器模块。该第二交叉开关模块被配置为,在这些线路卡中的一对线路卡之间传送这些分组。该调度器模块被配置为(i)调度这些分组通过该第二交叉开关模块的传送,以及(ii)经由控制信号与这些线路卡进行通信。这些控制信号中的控制分组包括相应的第一冗余比特。当生成这些控制信号中的相应控制信号时,该调度器模块和这些线路卡将这些第一冗余比特添加至这些控制分组。这些线路卡中的一个线路卡被配置为(i)生成数据信号以每个都包括这些分组中的一些分组,(ii)将第二冗余比特添加至这些数据信号的相应分组,以及(iii)将这些数据信号传输给这些交叉开关模块。
在其他特征中,这些控制分组中的一个控制分组中的冗余比特的第一数目与这些控制分组中的该一个控制分组的大小的第一比率大于这些数据信号中的分组中的一个分组中的冗余比特的第二数目与这些数据信号中的分组中的该一个分组的大小的第二比率。
在其他特征中,这些控制分组中的每个控制分组具有相同数目的冗余比特;并且这些数据信号中的分组中的每个分组具有相同数目的冗余比特。
在其他特征中,这些线路卡被配置为(i)生成用于传送这些分组的请求信号,以及(ii)将第一冗余比特添加至这些请求信号中的每个请求信号。该调度器模块被配置为(i)基于这些请求信号来生成确认信号,以及(ii)将第二冗余比特添加至这些确认信号中的每个确认信号。
在其他特征中,这些线路卡被配置为(i)接收分组,以及(ii)基于这些分组来生成请求信号。该调度器模块被配置为,基于这些请求信号来生成确认信号。这些控制信号包括这些请求信号和这些确认信号。
在其他特征中,一种接入系统被提供并且包括线路卡和交叉开关模块。这些线路卡中的一个线路卡被配置为接收分组。这些交叉开关模块与这些线路卡分离。这些交叉开关模块包括第一交叉开关模块和第二交叉开关模块。该第一交叉开关模块包括调度器模块。该第二交叉开关模块被配置为,在这些线路卡中的一对线路卡之间传送这些分组。该调度器模块被配置为(i)调度这些分组通过该第二交叉开关模块的传送,以及(ii)经由控制信号与这些线路卡进行通信。第一设备被配置为(i)将控制消息插入在两个分组之间或者分组的两个部分之间,以及(ii)将该两个分组和该控制消息或者该分组的该两个部分和该控制消息传输给第二设备。该第一设备是这些线路卡中的一个线路卡或者这些交叉开关模块中的一个交叉开关模块。该第二设备是这些线路卡中的一个线路卡或者这些交叉开关模块中的一个交叉开关模块。
在其他特征中,一种接入系统被提供并且包括线路卡和交叉开关模块。这些线路卡包括第一线路卡和第二线路卡。该第一线路卡被配置为接收第一分组。这些交叉开关模块与这些线路卡分离并且包括第一交叉开关模块和第二交叉开关模块。该第一交叉开关模块包括调度器模块。该第二交叉开关模块被配置为,在该第一线路卡与该第二线路卡之间传送该第一分组。该调度器模块被配置为(i)调度该第一分组通过该第二交叉开关模块的传送,以及(ii)经由控制信号与这些线路卡进行通信。该第一线路卡被配置为,将该第一分组分段为分组,之后将这些分组传输给该第二交叉开关模块。该第二线路卡被配置为重组装这些分组以提供该第一分组。
在其他特征中,该调度器模块被配置为,在第二分组通过该第二交叉开关模块的传输之前,调度该第一分组的传输。该第二交叉开关模块在传输该第一分组的一部分之前传输该第二分组。该第二线路卡被配置为,在接收到该第一分组的各部分之后重组装该第一分组。
在其他特征中,一种接入系统被提供并且包括线路卡和交叉开关模块。这些线路卡包括第一线路卡和第二线路卡。该第一线路卡被配置为接收单播分组和多播分组。这些交叉开关模块与这些线路卡分离并且包括第一交叉开关模块和第二交叉开关模块。该第一交叉开关模块包括调度器模块。该第二交叉开关模块被配置为,在该第一线路卡与该第二线路卡之间传送这些单播分组和这些多播分组。该调度器模块被配置为,调度这些单播分组沿着该第一线路卡与该第二线路卡之间的路径的传送。该路径包括该第二交叉开关模块。该调度器模块不被配置为调度这些多播分组的传送。
在其他特征中,该第一线路卡被配置为,将释放信号与分配请求中的一个传输给该调度器模块。该调度器模块被配置为,基于该释放信号与该分配请求中的该一个,通过延迟这些单播分组沿着该路径的所调度的传输来预留该路径用于这些多播分组。
在其他特征中,该第二交叉开关模块被配置为:在传输这些多播分组中的每个多播分组之前,存储这些多播分组中的每个多播分组;在传输这些多播分组时接收这些单播分组;以及中断这些多播分组中的一个多播分组的传输或这些多播分组的传输以传输这些单播分组。
在其他特征中,该第二交叉开关模块被配置为:在接收这些单播分组之前接收这些多播分组;以及在沿着该路径传输多播分组之前,沿着该路径传输这些单播分组。
在其他特征中,该第一线路卡被配置为:在接收到这些多播分组之后,将请求信号传输给该调度器模块以调度这些单播分组的传输;基于该请求信号,从该调度器模块接收确认信号;以及基于该确认信号,暂停这些多播分组中的一个或多个多播分组的传输,以传输这些单播分组。
在其他特征中,该第一线路卡被配置为:通过将释放信号和分配请求中的一个传输给该调度器模块,来预留该路径用于高优先级多播分组;不预留该路径用于低优先级多播分组;以及当带宽变为可用时,沿着该路径传输这些低优先级多播分组。
在其他特征中,该第一线路卡被配置为,在以下各项中的至少一项时,沿着该路径传输这些低优先级多播分组:针对将沿着该路径传输的单播分组没有接收到确认信号;或者该第一线路卡不具有要沿着该路径传输的单播分组。
从详细描述、权利要求和示图,本公开内容的适用性的进一步领域将变得明显。本详细描述和具体示例意图仅用于说明的目的并且不意图限制本公开内容的范围。
具体实施方式
在以下的示例中,提供了多个接入网络、接入系统、以及对应的技术。图1-2中示出了单级接入系统。图3中示出了多级接入系统。
图1图示了接入网络10的一个实施例。接入网络10包括机架12、网络14、互联网16、以及网络设备18(示出了p个网络设备)。机架12经由网络14而连接至网络设备18。网络14可以是,例如,以太网网络。如本文所使用的术语“机架”是指一个或多个机架,该一个或多个机架可以每个都包括机箱(cabinet),该机箱具有用于交换卡和/或线路卡的插槽。该机箱可以被安装在框架(rack)内部。机架12路由网络设备18之间和/或网络设备18与互联网16之间的信号。网络设备18可以包括用户设备、外围设备、和/或数据存储设备。用户设备可以包括计算机、蜂窝电话、机顶盒、电视机,等等。
机架12包括具有交换卡22和线路卡24的接入系统20。尽管示出了n个交换卡和m个线路卡,但是接入系统20可以包括任何数目的交换卡和线路卡。交换卡22中的每个交换卡包括一个或多个交叉开关(crossbar)模块26。本文所公开的每个交叉开关模块可以是单个芯片,或者可以与一个或多个其他交叉开关模块一起被包括在单个芯片中。线路卡24中的每个线路卡包括物理层(PHY)模块28、处理模块30、以及接口控制模块32(也称为交换结构接口控制器)。PHY模块28可以具有任何数目的入口端口和出口端口,以用于传送网络14与处理模块30之间的分组。PHY模块28可以位于和/或连接在,例如,线路卡中的介质接入控制(MAC)模块34和/或其他更高层模块与机架之间。PHY模块28还可以位于和/或连接在网络14或互联网16之间。PHY模块28可以指代线路卡和机架的物理层中的设备。MAC模块34可以位于处理模块30中。
处理模块30可以每个都包括网络处理器和/或分组处理器。在操作中,第一线路卡的处理模块可以从PHY模块接收入口分组,并且然后确定这些入口分组将被传送给除了第一线路卡之外的哪个线路卡(第二线路卡)。处理模块和/或对应的接口控制模块(ICM)可以将一个头部附加至入口分组中的一个或多个入口分组,以指示第二线路卡和/或第二线路卡的ICM的标识符。该头部可以是,例如,传输控制协议(TCP)头部。
线路卡24中的每个线路卡可以被称为入口线路卡或者出口线路卡。ICM 32中的每个ICM可以被称为入口ICM(iICM)或者出口ICM(eICM)。iICM生成请求信号来请求分组向eICM的传送。请求信号中的每个请求信号可以包括eICM的标识符以及对应的一个或多个分组的大小。ICM 32中的每个ICM可以经由(经由网状网络提供的)高速链路而连接至交叉开关模块26中的每个交叉开关模块或者连接至所指配的交叉开关模块26的组。
交叉开关模块26中的一个或多个交叉开关模块包括调度器模块40(在所示出的示例中仅一个)。不包括调度器模块的其他交叉开关模块被称为数据交叉开关模块,因为这些交叉开关模块的目的是传送ICM 32对之间的数据(分组)。调度器模块40调度去往和来自被指配给调度器模块40的交叉开关模块26的分组的传送。在所示出的示例中,调度器模块40对分组经由交叉开关模块26在ICM 32对之间的传送进行调度,并且识别链路中的所选择的链路来传送这些分组。这包括针对包括调度器模块40所位于的交叉开关模块的交叉开关模块26中的每个交叉开关模块的分组传送的调度。调度器模块40以确认(ACK)信号对请求信号进行响应。每个ACK信号为与该ACK信号和eICM相关联的分组来指示交叉开关模块26中的一个交叉开关模块的标识符。接收到ACK信号的iICM根据该ACK信号将这些分组传送给所识别的交叉开关模块。iICM在所附加至分组中的一个或多个分组的头部中指示该交叉开关模块和eICM的标识符。该交叉开关模块然后根据该头部将这些分组转发给该eICM。
调度器模块40控制线路卡24与交叉开关模块26之间的链路的状态,并且控制去往和来自交叉开关模块26的分组流。由调度器模块40对链路的中央分配将交叉开关模块26中的队列(有时称为缓冲器)的填充水平维持在低水平。图2中示出了交叉开关模块的队列。这防止了这些队列的溢出,并且结合对去往和来自交叉开关模块26的完整分组的传送,最小化了(i)被用于分组的重排序的存储器的量,以及(ii)在从eICM的传输之前的对分组的重排序的量。对完整分组的传送防止了与分组的分段、分组的重排序、和/或分组的重组装相关联的延迟。
接入机架12具有单级拓扑结构,该单级拓扑结构包括独立的交换背板(backplane)。独立的交换背板是指分组经由所指配的交叉开关模块和对应的背板链路(交叉开关模块的入口和出口链路)的传送。在一对ICM之间经由单个所指配的交叉开关模块来传送每个分组或者分组集合。在所示出的示例实施方式中,没有分组是经由多于一个交叉开关模块来传送的。ICM 32与交叉开关模块26之间的每个链路与独立的交换背板之一相关联。在任何ICM 32对之间通过独立的交换背板之一来提供完全的连接性。这些交换背板是非交叠的。
调度器模块40存储交叉开关模块26中的每个交叉开关模块的状态以及ICM 32与交叉开关模块26之间的链路的状态。交叉开关模块26中的每个交叉开关模块和链路的状态可以是活动的或者非活动的(也称为可用的)。调度器模块40将ICM之间的包括对应链路的路径指配为可用于新接收的分组,并且生成指示这些链路的标识符的ACK信号。每个ACK信号的标识符包括以下各项的标识符:(i)iICM与交叉开关模块之间的入口链路,以及(ii)该交叉开关模块与eICM之间的出口链路。ACK信号还可以指示iICM何时将一个或多个分组发送给交叉开关模块。
图2示出了图1的接入网络10的一部分50并且图示了单级调度。部分50包括iICM52、调度器模块54(也称为背板调度器模块)、交叉开关模块56、以及eICM 58。iICM 52、交叉开关模块56、以及eICM 58可以例如代替图1的ICM 32中的两个ICM和交叉开关模块26之一。调度器模块54可以代替图1的调度器模块40。尽管下面关于两个ICM和单个交叉开关模块描述了调度器模块54,但是调度器模块54可以执行与添加的ICM和交叉开关模块有关的类似功能。尽管ICM 52、58被称为iICM和eICM,但是ICM 52、58中的每个ICM都可以被配置为操作为iICM和/或eICM。
ICM 52包括入口接口60、背板队列(BQ)模块62、以及入口链路队列(ILQ)模块64。入口接口60经由网络(例如,图1的网络14)从网络设备接收分组。这些分组被传送给并且存储在BQ模块62的队列66中。在接收到一个或多个分组之后,BQ模块62生成用以将该一个或多个分组转发给eICM 58的请求信号。该请求信号被传输给调度器模块54。基于该请求信号,调度器模块54生成ACK信号并且转发给iICM 52。
ILQ模块64包括队列68,并且响应于该ACK信号,将该分组从BQ模块62转发给交叉开关模块56。响应于该分组被传输给交叉开关模块56,ILQ模块64可以将释放信号传输给调度器模块54。该释放信号可以响应于该ACK信号而被传输,并且指示了与该请求信号相关联的分组向交叉开关模块56的转发。该释放信号可以指示交叉开关模块56的标识符和被转发给交叉开关模块56的分组的总大小。
调度器模块54包括具有队列72的请求队列(RQ)模块70、核心模块74、以及链路状态模块76。RQ模块70的队列72存储从BQ模块62接收的请求信号。核心模块74基于以下各项的状态来调度请求信号的传送:(i)iICM 52与交叉开关模块56之间的链路,以及(ii)交叉开关模块56与eICM 58之间的链路的状态。核心模块74生成识别这些链路的ACK信号,该ACK信号被转发给BQ模块62。核心模块74基于可用的链路来对请求信号进行仲裁并且生成该ACK信号。iICM 52基于该ACK信号来从BQ模块62中的对应队列中选择分组,并且在单个链路上将该分组转发给交叉开关模块56。该分组可以是自路由的,因为该分组具有由iICM 52所添附的头部。该头部指示了该分组将在其上被转发的链路以及该分组在eICM 58处被接收之前将经过的交叉开关模块56。该头部还包括eICM 58的标识符。由于这个原因,交叉开关模块56不需要任何识别该分组要遵循的路由的先验信息。
链路状态模块76跟踪这些链路的状态并且存储链路状况值,这些链路状况值指示了这些链路是否为活动的、非活动的和/或可用的。例如,当ACK信号从核心模块74被发送给BQ模块62时,这个信息可以被更新。这些链路的状态还可以指示这些链路的负载状态,包括每个链路将被占用多久。这可以基于被传送的分组的大小。核心模块74和/或链路状态模块76跟踪所调度的分组、这些分组正在其上被传送的链路、这些分组的大小,等等。
交叉开关模块56包括交叉开关队列(CQ)模块78和共享的存储器交换机(SMS)80。CQ模块78包括队列79,队列79存储从iICM 52接收的分组。SMS 80将从iICM 52接收的分组路由至eICM 58。SMS 80可以从其他iICM接收分组并且将这些分组转发给eICM 58或者转发给其他eICM。交叉开关模块56(i)确定队列79之一的填充水平,并且(ii)响应于该队列的填充水平不同于预定水平,将第一状况消息TICK发送给eICM 58和/或对应的线路卡。该预定水平可以是以下各项中的至少一项:(i)等于调度器模块54中存储的状况值,或者(ii)基于与请求信号相对应的一个或多个分组集合的大小来设置。eICM 58(i)将第一状况消息TICK转发给调度器模块54,或者(ii)基于第一状况消息TICK来生成第二状况消息,并且将第二状况消息传输给调度器模块54。调度器模块54被配置为基于第一状况消息TICK或者第二状况消息来调整该状况值。这允许该状况值取决于队列的状态而被增加或减少(向上取整或者向下取整),并且维持用于交叉开关模块56与eICM 58之间的链路的状况值的准确性。当队列中存储的这些分组的大小不同于调度器模块54中存储的状况值时,这辅助了维持该状况值。
eICM 58包括出口链路队列(ELQ)模块82、重排序缓冲器(ROB)模块84、出口端口队列(EPQ)模块86、以及出口接口88。模块82、84、86中的每个模块包括相应的队列90、92、94。ELQ模块82从SMS 80接收分组并且将这些分组转发给ROB模块84。ROB模块84如果有需要就对这些分组重排序。尽管示出了单个交叉开关模块,但是iICM 52与eICM 58之间可以连接多个交叉开关模块。如此,ROB模块84可以经由两个或更多交叉开关模块从iICM 52接收多于一个分组。交叉开关模块的速度可能是不同的,从而第一分组在第二分组之后被接收,其中第二分组在第一分组之后被传输。这可能导致在ROB模块84处以不正确的顺序接收到分组。ROB模块84然后可以对这些分组重排序。经重排序的分组被转发给EPQ模块86并且然后被转发给出口接口88。
图3示出了接入系统100并且图示了多级调度。接入系统100包括两个或更多接入机架102、104(或者单级机架)和背板机架106(或者第二级机架)。背板机架106可以经由接线而连接至第一级机架。
接入机架102、104中的每个接入机架包括交换卡108、109和线路卡110、112的第一级。交换卡108、109包括相应的交叉开关模块114、116。背板机架106包括具有相应的交叉开关模块124、126的交换卡120、122的第二级。交叉开关模块124、126中的第一多个交叉开关模块(例如,调度器交叉开关模块00、11)包括相应的调度器模块128、130。背板机架106的剩余交叉开关模块(或者数据交叉开关模块10-x0、11-x1)被分配用于传输数据分组。
线路卡110中的每个线路卡具有对交叉开关模块114中的每个交叉开关模块的接入。线路卡112中的每个线路卡具有对交叉开关模块116中的每个交叉开关模块的接入。接入机架102、104(被标识为分派器交叉开关模块00、11)中的每个接入机架中的第一交叉开关模块(被标识为调度器交叉开关模块00、11)可以被分配用于(i)将请求信号和释放信号传输给调度器模块128、130,以及(ii)从调度器模块128、130接收ACK信号。线路卡110、112中的每个线路卡和/或对应的ICM140、142可以经由接入机架102、104中的剩余交叉开关模块(被标识为数据交叉开关模块01-0m、11-1m)将分组传输给背板机架106。作为一个示例,第一接入机架0被示出并且包括分派器交叉开关模块00和数据交叉开关模块01-0m,其中m是大于或等于1的整数。背板机架106的数据交叉开关模块10-x0、11-x1然后可以将这些分组转发给线路卡110、112和/或ICM 140、142中的适当交叉开关模块。
背板机架106的交叉开关模块124、126的第二级被划分为交叉开关模块集合。背板机架106可以包括例如x个交叉开关模块集合,其中x是大于或等于1的整数。如所示出的,交叉开关模块集合中的每个交叉开关模块集合包括一对交叉开关模块(例如,交叉开关模块对10、11、……、交叉开关模块对x0、x1)。交叉开关模块集合可以包括任何数目的交叉开关模块。在所示出的示例中,背板机架106包括调度交叉开关模块00、01和数据交叉开关模块10-x0、11-x1。交叉开关模块集合中的每个交叉开关模块集合包括两个或更多调度器交叉开关模块或者两个或更多数据交叉开关模块。交叉开关模块集合之一中的交叉开关模块中的每个交叉开关模块连接至接入机架102、104中的每个接入机架中的相应交叉开关模块。例如,交叉开关模块10、11每个都连接至第一接入机架102中的交叉开关模块01和第二接入机架104中的交叉开关模块11。
如所示出的,交叉开关模块00、01的第一集合中的每个交叉开关模块可以包括调度器模块(例如,调度器模块128、130)。调度器模块128、130中的每个调度器模块可以对分组通过其他交叉开关模块集合(例如,交叉开关模块10、11……x0、x1)中的相应交叉开关模块的传输进行调度。这个调度可以基于从线路卡110、112接收的请求信号和相应交叉开关模块10、11……x0、x1的链路可用性。例如,交叉开关模块00、01的第一集合中的第一调度器模块128(调度器模块1)可以对分组通过交叉开关模块10、11……x0、x1的其他集合中的每个交叉开关模块集合中的第一交叉开关模块10-x0的所选择且可用的链路的传输进行调度。
在操作中,调度器模块128、130中的每个调度器模块跟踪并控制针对被指配给该调度器模块的交叉开关模块(例如,相应机架102、104、106中的每个机架中的相应数据交叉开关模块)的每个链路的状态。调度器模块128、130可以在这些链路的活动性状态处于低水平(小于预定的流量水平)时分配这些链路用于新接收的完整分组。由调度器模块128、130对链路的中央分配辅助了最小化机架102、104、106的数据交叉开关模块中的队列的填充水平。这结合通过数据交叉开关模块01-0m、10-1m、10-x0、11-x1对完整分组的交换控制,使得eICM中的分组的重排序的量最小化,这使得eICM的存储器要求最小化。
交叉开关模块114、116、124、126的第一级和第二级可以被称为具有将通信系统中的许多设备和/或模块互连的“折叠式clos”或者“clos网络”拓扑结构。第一级和第二级提供了独立的交换背板。每个交换背板指代交叉开关模块的一个或多个路径以及通过其在ICM之间传送数据的链路。第一级中的每个交叉开关模块和第二级中的每个对应的交叉开关模块集合与不同的交换背板相关联。交换背板中的每个交换背板提供一对ICM之间(例如,第一线路卡的第一ICM与第二线路卡的第二ICM之间)的完整连接性(传导路径)。每个交叉开关模块和交叉开关模块的链路被分配给单个交换背板。作为结果,这些交换背板是非交叠的(即,不共享交叉开关模块和/或链路)。
交换背板中的一个或多个交换背板被配置作为控制背板。在所示出的示例中,提供了两个控制背板。控制背板中的每个控制背板包括分派器交叉开关模块00、11和调度器模块128、130之一。
ICM 140、142可以每个都操作为iICM和/或eICM。当操作为iICM时,分组请求信号由iICM转发给第一级中的分派器交叉开关模块00、11中的相应的分派器交叉开关模块。该分派器交叉开关模块执行对去往第二级中的调度叉开关模块00、11中的相应的调度交叉开关模块的请求信号的负载平衡。调度器模块128、130中的每个调度器模块控制单个交换背板,跟踪该交换背板中的交叉开关模块、链路的状态,并且分配链路用于iICM与eICM之间的分组的传输。这些非交叠的交换背板防止了调度器模块128、130之间的资源冲突。调度器模块128、130响应于请求信号来生成ACK信号,并且将这些ACK信号转发给起始这些请求信号的iICM。每个ACK信号可以识别从对应iICM到对应eICM的完整路径。每个ACK信号可以包括对应路径的链路、交叉开关模块和eICM的标识符。交叉开关模块的标识符可以包括第一级(或入口)交叉开关模块、第二级交叉开关模块、以及另一个第一级(或出口)交叉开关模块的标识符。
响应于接收到ACK信号,iICM从该iICM的BQ模块(例如,图2的BQ模块62)中选择分组,并且将该分组转发给第一级的所分配的交叉开关模块。该分组然后沿着所指配的路径,经由该路径中的其他链路和交叉开关模块而被转发给eICM。该分组是自路由的,因为该分组具有识别该路径中的链路、交叉开关模块和eICM的头部。
可以使用很多方法来操作本文所公开的接入系统,图4中图示了一种示例方法。尽管主要关于图1-3的实施方式描述了以下的任务,但是这些任务可以容易地被修改以应用至本公开内容的其他实施方式。这些任何可以迭代地被执行。尽管主要关于单个iICM和单个eICM描述了以下的任务,但是这些任务可以被执行用于任何数目的iICM和eICM。
该方法可以在200处开始。在202处,iICM(例如,iICM 52)从网络设备接收一个或多个分组。在204处,该一个或多个分组被存储在BQ模块(例如,BQ模块62)中。
在206处,如上面所描述的,iICM生成一个或多个请求信号,以使得这些分组被传送给eICM(例如,eICM 58),并且将该一个或多个请求信号转发给调度器模块(例如,调度器模块54、128、130之一)。iICM可以与eICM在不同的线路卡上。
在208处,如本文所描述的,这些请求信号被存储在调度器模块中。在210处,调度器模块的核心模块(例如,核心模块74)确定长请求信号是否已经被接收到并且被存储在核心模块中。长请求信号是指与以下各项相关联的请求信号:(i)分组的数目大于或等于分组的预定数目(或分组的完整集合)和/或(ii)大于或等于预定数据长度的一个或多个分组的数据长度。如果没有接收到长请求信号,则任务212被执行,否则任务228被执行。
在212处,核心模块确定短请求信号是否已经被接收到并且被存储在核心模块中。短请求信号可以是指与以下各项相关联的请求信号:(i)单个分组,(ii)小于分组的预定数目的分组的数目,和/或(iii)小于预定数据长度的一个或多个分组的数据长度。如果接收到短请求信号,则任务214被执行,否则任务202可以被执行。作为对返回到任务202的一种替换,该方法可以在260处结束。
在214处,链路状态模块(例如,链路状态模块76)可以针对短请求信号的一个或多个分组来确定链路和交叉开关模块的可用性。
在216处,核心模块为该一个或多个分组选择路径,包括为该一个或多个分组指配链路和一个或多个交叉开关模块。
在218处,核心模块生成用于该一个或多个分组的ACK信号。该ACK信号识别包括链路、一个或多个交叉开关模块、以及eICM的ID的该路径。短请求信号的ACK信号可以被称为短ACK信号。
在220处,iICM、BQ模块和/或ILQ模块(例如,ILQ模块64)基于该ACK信号,将一个头部附加在与该短请求信号相关联的分组中的一个或多个分组中的每个分组上。
在222处,iICM通过将该短请求信号的分组转发给所指配的路径中的交叉开关模块,来将这些分组沿着所指配的路径转发给eICM。
在224处,响应于将这些分组转发给该交叉开关模块,iICM模块将释放信号传输给链路状态模块。该释放信号可以指示被传输给第一交叉开关模块的分组的总长度。短ACK信号的释放信号可以被称为短释放信号。
在226处,链路状态模块基于该释放信号来调整用于该路径中的链路和一个或多个交叉开关模块的状况值。在任务226之后,该方法可以如所示出的在260处结束或者返回到任务202。
在228处,核心模块确定是否已经有在长请求信号之前被接收到并且被存储在核心模块中的短请求信号。如果短请求信号被存储在核心模块中,则任务230被执行,否则任务246被执行。
在230处,核心模块丢弃该短请求信号。
在232处,链路状态模块可以为与长请求信号相关联的分组确定链路和交叉开关模块的可用性。
在234处,核心模块为与长请求信号相关联的分组选择路径,包括为这些分组指配链路和一个或多个交叉开关模块。
在236处,核心模块生成用于与长请求信号相关联的分组的ACK信号。该ACK信号识别该路径中的链路、一个或多个交叉开关模块、以及eICM的ID。长请求信号的ACK信号可以被称为长ACK信号。
在238处,iICM、BQ模块和/或ILQ模块基于该ACK信号,将一个头部附加在与长请求信号和短请求信号相关联的分组中的一个或多个分组中的每个分组上。
在240处,iICM通过将短请求信号和长请求信号的分组转发给在234处确定的所指配的路径中的交叉开关模块,来将这些分组沿着所指配的路径转发给eICM。
在242处,响应于在240处转发这些分组,iICM模块将释放信号传输给链路状态模块。该释放信号可以指示与短请求信号和长请求信号相关联的分组的总长度。长ACK信号的释放信号可以被称为长释放信号。
在244处,链路状态模块基于该释放信号来调整用于该路径中的链路和一个或多个交叉开关模块的状况值。在任务244之后,该方法可以如所示出的在260处结束或者返回到任务202。
在246处,链路状态模块可以为长请求信号的分组确定链路和交叉开关模块的可用性。
在248处,核心模块为与长请求信号相关联的分组选择路径,包括为这些分组指配链路和一个或多个交叉开关模块。
在250处,核心模块生成用于与长请求信号相关联的分组的ACK信号。该ACK信号识别包括链路、一个或多个交叉开关模块、以及eICM的ID的该路径。
在252处,iICM、BQ模块和/或ILQ模块基于该ACK信号,将一个头部附加在与短请求信号相关联的分组中的一个或多个分组中的每个分组上。
在254处,iICM通过将与长请求信号相关联的分组转发给在248处确定的所指配的路径中的交叉开关模块,来将这些分组沿着所指配的路径转发给eICM。
在256处,响应于将这些分组转发给该交叉开关模块,iICM模块将释放信号传输给链路状态模块。该释放信号可以指示在254处所传输的分组的总长度。
在258处,链路状态模块基于该释放信号来调整用于该路径中的链路和一个或多个交叉开关模块的状况值。在任务258之后,该方法可以如所示出的在260处结束或者返回到任务202。
上面所描述的任务旨在是说明性的示例;这些任务可以依次地、同步地、同时地、连续地、在交叠的时间段期间或者取决于应用按不同的顺序而被执行。此外,取决于事件的实施方式和/或次序,这些任务中的任何任务可以不被执行或者被跳过。
调度
图5示出了调度器模块270。调度器模块270可以代替图1和2中所公开的调度器模块中的任何调度器模块。调度器模块270包括解码模块272、请求缓冲器模块274、链路状态模块276、核心模块278、以及编码模块280。解码模块272从iICM接收并解码请求信号和释放信号。解码模块272将经解码的请求信号转发给请求缓冲器模块274,并且将经解码的释放信号转发给链路状态模块276。
请求缓冲器模块274包括用于存储经解码的请求信号的请求队列282。请求缓冲器模块274将队列状况信号和经解码的请求信号转发给核心模块278。这些队列状况信号指示请求队列282的状态,以及是否存在被存储在请求队列282中的短请求信号和/或长请求信号。
核心模块278包括队列状态模块284、裁剪模块286、具有仲裁模块289的一个或多个决定模块288、以及ACK模块290。队列状态模块284接收队列状况信号和经解码的请求信号,并且确定长请求信号和短请求信号在请求队列282中的存在。
裁剪模块286中的每个裁剪模块确定ICM之间的包括交叉开关模块链路的路径是否可用于请求信号中的一个请求信号的分组。这基于从链路状态模块276接收的链路状况信号来确定。该链路状况信号指示ICM之间的包括交叉开关模块链路的路径是否可用于与该请求信号相关联的分组。如果路径是可用的,则对应的裁剪模块将该请求信号转发给仲裁模块289之一。作为结果,这些裁剪模块基于链路可用性来执行对请求信号的过滤。
决定模块288经由仲裁模块289对从裁剪模块286中的两个或更多裁剪模块接收的请求信号进行仲裁,并且为与这些请求信号相关联的分组选择路径。作为一个示例,决定模块288和/或仲裁模块289中的每个仲裁模块可以包括多个输入和多个输出,并且可以选择这些输入之一上的请求信号,以转发给这些输出中的任何一个输出。决定模块288和/或仲裁模块289中的每个仲裁模块可以执行作为“轮询”设备,并且遍及相应的输入进行循环,一次将所选择的输入上的请求信号之一提供给输出中所选择的一个输出。每次请求信号被转发给输出之一,剩余的输出可以被维持在空状态或负状态中。这些决定模块为经过仲裁模块的请求信号选择路径,并且生成匹配。每个匹配可以识别请求信号、iICM、eICM、对应的路径、和/或该路径的链路的ID。关于图6-8来进一步描述决定模块的操作。
ACK模块290基于从决定模块288接收的匹配来生成ACK信号。ACK模块290可以包括用以过滤出冗余ACK信号的过滤器模块292。裁剪模块286中的两个或更多裁剪模块可以监测请求缓冲器模块274的相同请求队列。作为结果,可能为相同的请求信号生成多个ACK信号。过滤器模块292丢弃(或删除)冗余ACK信号。这进一步关于图7来描述。编码模块280对从ACK模块290接收的ACK信号进行编码,之后传输给请求信号从其起始的iICM。
图6示出了图示出对多个仲裁模块集合的使用的核心模块300。核心模块300可以从多个iICM 302接收控制信号,诸如请求信号和释放信号。核心模块300包括请求队列304、裁剪模块304、以及决定模块308、310。核心模块300可以在请求队列304和裁剪模块306的相应集合(例如,请求队列1-m和裁剪模块1-m和/或请求队列(m+1)-n和裁剪模块(m+1)-n)处接收控制信号。第一集合包括请求队列1-m和裁剪模块1-m。第二集合包括请求队列(m+1)-n和裁剪模块(m+1)-n。如所示出的,请求队列和裁剪模块的集合可以对应于决定模块308、310中的串行连接的仲裁模块的集合。决定模块308、310中的每个决定模块可以包括任何数目的仲裁模块。在所示出的示例中,决定模块308、310中的每个决定模块包括两个仲裁模块(仲裁模块312、314和仲裁模块316、318)以及路径选择模块(路径选择模块320、322之一)。第一集合包括仲裁模块1-2。第二集合包括仲裁模块3-4。当用于与请求信号相关联的对应分组的路径可用时,裁剪模块306中的每个裁剪模块转发请求队列304中的对应请求队列中存储的请求信号。该路径可以包括:请求信号的iICM与交叉开关模块之间的链路;交叉开关模块之间的一个或多个链路;以及交叉开关模块与eICM之间的链路。
仲裁模块集合中的第一仲裁模块1、3可以执行作为“轮询”设备,遍及在第一仲裁模块1、3的第一输入处从裁剪模块306中的对应裁剪模块接收的信号进行循环。第一仲裁模块1、3可以接连地、按随机顺序、按预定顺序、或者按另一合适顺序来选择信号和/或第一输入。第一仲裁模块1、3然后可以将所接收的请求信号转发给第一仲裁模块1、3的第一输出,以用于传输给第二仲裁模块2、4。可以接连地、按随机顺序、按与第一仲裁模块1、3的第一输入被选择的相同或不同的顺序、或者按另一合适顺序来选择第一仲裁模块1、3的第一输出。第一仲裁模块1、3的输出中的每个输出可以被转发给第二仲裁模块2、4的第二输入中的任何第二输入。
第二仲裁模块2、4具有第二输入,这些第二输入从第一仲裁模块1、3接收请求信号。第二仲裁模块2、4接连地、按预定顺序、按随机顺序、或者按另一合适顺序来选择第二输入。第二仲裁模块2、4可以接连地、按预定顺序、按随机顺序、按第二输入被选择的相同或不同顺序、或者按另一合适顺序来将请求信号从第二输入转发给第二仲裁模块2、4的第二输出。第二仲裁模块2、4可以反转由第一仲裁模块1、3执行的选择顺序。
第一仲裁模块1、3中的每个第一仲裁模块(可以称为iICM仲裁模块)每iICM从请求队列304和/或裁剪模块306之一选择一个请求信号。第二仲裁模块2、4中的每个第二仲裁模块(可以称为eICM仲裁模块)为每个eICM选择一个请求信号。仲裁模块312-318和路径选择模块320-322可以将请求信号指配给路径,从而来自iICM的每个请求信号被转发给单个eICM。可以向每个iICM指配通向相应eICM的不同路径。这些路径可以是非交叠的(即,不共享iICM与交叉开关模块之间的链路、交叉开关模之间的链路、和/或交叉开关模块与eICM之间的链路)。
图7示出了图示出对请求信号的双重监测和对确认信号的过滤的核心模块330。这些请求信号由iICM 332提供给请求队列334,并且可以由裁剪模块336监测并且然后被转发给决定模块338、340。决定模块338、340可以每个都包括仲裁模块342、344和346、348以及路径选择模块350、352,并且可以与图6的决定模块308、310相类似地进行操作。
可以提供过滤器模块360来过滤由路径选择模块350、352生成的冗余匹配。当两个匹配针对相同的请求信号被生成时,冗余匹配被生成。过滤器360提交这两个匹配中的一个匹配并且丢弃这两个匹配中的另一匹配。
可以使用很多方法来操作本文所公开的核心模块,图8中图示了一种示例方法。尽管主要关于图5-7的实施方式描述了以下任务,但是这些任务可以容易地被修改以应用至本公开内容的其他实施方式。这些任务可以迭代地被执行。
该方法可以在400处开始。在402处,请求队列(例如,282、304、334)从iICM接收请求信号并且存储这些请求信号。在404处,裁剪模块(例如,裁剪模块286、306、336)接收这些请求信号并且基于路径可用性来转发这些请求信号中的所选择的请求信号。
在406处,如上面所描述的,第一仲裁模块(例如,仲裁模块312、316或仲裁模块342、346)可以对从裁剪模块接收的请求信号进行仲裁。在408处,串行地连接至第一仲裁模块中的相应第一仲裁模块的第二仲裁模块(例如,仲裁模块314、318或仲裁模块344、348)可以对从第一仲裁模块接收的请求信号进行仲裁。任务406或408中的任何一个任务可以不被执行,和/或如果添加的仲裁模块被包括则添加的仲裁任务可以被执行。
在410处,路径选择模块(例如,路径选择模块320、322、350、352)为从仲裁模块之一接收的请求信号中的每个请求信号选择路径,只要路径仍然是可用的。如上面所描述的,当路径可用时,路径选择模块生成匹配。在412处,过滤器模块(例如,过滤器模块360)可以移除在410处生成的冗余匹配。
在414处,确认模块(例如,确认模块290)可以针对从路径选择模块和/或从过滤器接收的匹配中的每个匹配来生成ACK信号。这些ACK信号可以被传输给对应的请求信号从其起始的相应iICM。该方法可以在416处结束。
上面所描述的任务旨在是说明性的示例;这些任务可以依次地、同步地、同时地、连续地、在交叠的时间段期间或者取决于应用按不同的顺序而被执行。此外,取决于事件的实施方式和/或次序,这些任务中的任何任务可以不被执行或者被跳过。
上面所描述的系统包括经由链路相互连接的线路卡、ICM、交叉开关模块、以及交换卡。归因于在这些链路上传递的数据量,这些链路可以是串化器/解串化器(串化解串器)链路以增加带宽。线路卡、ICM、交叉开关模块、以及交换卡中的每个线路卡、ICM、交叉开关模块、以及交换卡可以包括用于传输数据的串化器/解串化器模块或者实例化,和/或用于接收数据的解串化器/串化器模块或者实例化。串化器/解串化器实例化和解串化器/串化器实例化可以是相异的模块或者可以被包括在其他模块中。作为结果,在链路上传输的信号(包括控制信号和数据信号)可以是串行信号。
传送控制信号的链路被称为控制链路。传送数据分组的链路被称为数据链路。包括控制链路和数据链路的链路中的每个链路可以接连地传送信息实体。这些信息实体中的每个信息实体可以包括信息集合。作为一个示例,针对传送短请求的控制链路的信息实体可以包括分组长度和目的地eICM的标识符。作为另一示例,针对传送长请求的控制链路的信息实体可以包括目的地eICM的标识符。作为又另一示例,针对传送释放信号的控制链路的信息实体可以包括分组长度和一个或多个链路的标识符。短ACK信号和/或长ACK信号的信息实体可以包括eICM的标识符和一个或多个链路的标识符。贯穿本申请,提供了信息实体的其他示例。
上面所描述的调度器模块分配链路中的所选择的链路用于线路卡对之间的分组传输。当在一对线路卡之间传送分组时,“经过”至少一个交换卡。对交换卡的该经过是指该分组通过该交换卡的交叉开关模块的传送。
每个调度器模块可以是相异的芯片。调度器模块中的每个调度器模块和/或调度器模块内的核心模块可以包括多个实例。实例可以指代算法、模块和/或软件程序。多个实例可以并行地被执行或者操作。这提高了能够由调度器模块生成的ACK的数目。
实例中的每个实例能够跨预定的链路集合进行分配。实例的这些链路集合是非交叠的。换句话说,每个链路集合不共享或具有相同链路。这允许这些实例并行地被实施,因为这些实例正使用不同的系统资源(例如,链路、交叉开关模块等)来传送分组。如上面关于图6类似描述的,多个实例可以监测相同的请求队列。作为结果,两个实例可以并行地被实施,并且针对请求队列中的请求信号生成两个ACK信号。可以使用过滤器来移除冗余ACK信号和对应的资源分配。
为了避免使得调度器实例以锁定步长式(lock-stepped)行为进行操作(其中这些实例以锁定步长生成相同的ACK),仲裁模块可以被设置为按随机顺序来选择所接收的请求信号和/或仲裁模块输入。每个仲裁模块的随机状态可以不同于用于每个其他仲裁模块的随机状态。能够以规律的或者随机的间隔来执行对所接收的请求信号和/或仲裁模块输入的随机选择。作为另一示例,针对仲裁模块中的一个或多个仲裁模块的所接收的请求信号和/或仲裁模块输入,可以在第一时间段内随机地被选择,并且在第二时间段内按非随机的顺序被选择。此外,为了进一步避免锁定步长(lock-step)行为,仲裁模块可以被硬编码为使用不同的输入顺序。例如,第一实例中的第一仲裁模块可以使用(0、1、2、3、4……)顺序,并且第二实例中的第一仲裁模块可以使用(2、0、4、3……)顺序,其中每个顺序的值是指每个仲裁模块的对应输入。
多芯片调度器
如上面所描述的,调度器模块中的每个调度器模块可以分配链路用于一对ICM之间的分组传输。iICM的线路卡将请求信号发送给调度器模块,调度器模块然后用ACK信号对线路卡进行响应。这些ACK信号中的每个ACK信号具有将在其上传输分组的一个或多个链路的一个或多个标识符。为了增加由调度器模块在一个时间段内生成的ACK的数目,请求信号(被称为“状态”)可以被拆分并且提供给多个调度器芯片。如上面所描述的,调度器模块可以具有多个实例。调度器芯片中的每个调度器芯片可以具有实例中的一个实例。这些实例中的每个实例可以接收该状态的一部分。
实例中的每个实例能够分配链路集合。这些链路集合是非交叠的。这些链路中没有一个链路在链路集合中的多于一个链路集合中。这些实例通过使用非交叠资源而并行地工作。
在一种实施方式中,分派器交叉开关模块被用来传送经调度的分组。分派器交叉开关模块不调度分组的传送,而是跨调度器模块、调度器芯片、和/或多个调度器模块的实例,对来自一个或多个线路卡的请求信号进行负载分布。可以每iICM地执行负载平衡请求,从而来自相同iICM的请求被提供给相同的调度器模块。
无塌缩的塌缩
“无塌缩的塌缩(collapsing without collapsing)”是指用以形成单个分组或者单个分组集合的对具有相同eICM标识符和/或出口端口标识符的单播分组的聚合。iICM可以针对单个聚合的分组或者分组集合来生成单个请求信号,并且将该请求信号传输给调度器模块(例如,调度器模块之一)。该调度器模块然后可以基于该请求信号来生成ACK信号。iICM然后可以响应于该ACK信号来传输该单个聚合的分组或者分组集合,并且生成释放信号。该释放信号可以指示该单个聚合的分组或者分组集合的总大小。该释放信号被传输给调度器模块用于链路状况更新的目的。
通过执行无塌缩的塌缩,单播分组被分成组并且被调度器模块视为单个分组。这减少了被传输给调度器模块的、被存储在调度器模块中的、以及由调度器模块处置的请求信号的数目。
不对称的前向纠错
上面所描述的ICM、交叉开关模块、以及调度器模块可以使用不对称的前向纠错(FEC)来减小控制信号的时延并且增加数据信号的带宽。如本文所公开的不对称FEC包括在第一模式和第二模式中的操作。ICM、交叉开关模块、以及调度器模块可以操作在第一模式中,同时操作在第二模式中。
第一模式是指(i)对iICM和调度器模块和/或调度器模块位于其中的交叉开关模块的操作,以及(ii)控制信号和在iICM与调度器模块之间在其上发送这些控制信号的对应第一链路。这包括从iICM发送给调度器模块的控制信号(例如,请求信号和释放信号)以及从调度器模块发送给iICM的控制信号(例如,ACK信号)。第一模式包括使用FEC来传输这些控制信号。在传输这些控制信号之前,第一预定量的冗余数据被附加至这些控制信号中的每个控制分组。该冗余数据被添加用于纠错并且防止误比特。作为一个示例,控制分组可以包括512比特的信息和32个冗余比特。这些冗余比特可以包括循环冗余校验(CRC)比特。
第二模式是指(i)对iICM和交叉开关模块的操作,以及(ii)数据信号和在iICM与交叉开关模块之间在其上发送这些数据信号的对应第二链路。第二链路的数目大于第一链路的数目。此外,这些数据信号在iICM接收到相应的ACK信号之后被发送。第二模式包括使用FEC来传输这些数据信号。在传输这些数据信号之前,第二预定量的冗余数据被附加至这些数据分组中的每个数据分组。第二预定量的冗余数据可以小于、等于或者大于第一预定量的冗余数据。作为一个示例,数据分组可以包括2千比特的信息和32个冗余比特。这些冗余比特可以包括CRC比特。
控制信号相比于数据信号具有高水平的开销和低水平的FEC时延,因为(i)控制信号的更少数目,以及(ii)相对于控制分组的大小而言更大量的冗余数据被添加至控制信号中的每个控制分组。数据信号具有低水平的开销和高水平的FEC时延,因为(i)数据信号的更大数目,以及(ii)相对于数据分组的大小而言更少量的冗余数据被添加至每个数据分组。因为这些原因,控制信号的控制分组中的一个或多个控制分组中的冗余比特的第一数目与该一个或多个控制分组的大小的第一比率,大于数据分组中的一个或多个数据分组中的冗余比特的第二数目与该一个或多个数据分组的大小的第二比率。
控制信号和数据信号的不对称FEC减少了与包括控制链路和数据链路的单个路径相关联的总时延,因为在控制链路上使用了低水平的FEC时延。提供了低带宽开销,因为数据链路具有低FEC开销并且该单个路径中的大多数链路是数据链路。
透明的消息插入
图9示出了相互通信并且共同提供透明消息插入的多个设备450、452。多个设备450、452中的每个设备可以是本文所公开的ICM、交叉开关模块、和/或调度器模块之一。第一设备450可以包括第一控制模块454、第一介质接入控制(MAC)模块456、第一消息模块458、以及第一PHY模块460。
第一控制模块454可以将分组转发给MAC模块456以用于传输给第二设备452。这些分组可以是控制分组或者数据分组。第一MAC模块456可以包括进行编码的物理编码子层(PCS)MAC编码器模块457。可以使用一个或多个MAC协议,在对应的链路上,从第一MAC模块456传送这些分组。这些链路可以是控制链路或者数据链路。
在一种实施方式中,第一控制模块454发信号通知第一消息模块458将控制消息插入在经编码的分组中的一个或多个经编码的分组中,和/或插入在经编码的分组中的两个或更多经编码的分组之间。在另一实施方式中,第一消息模块458生成控制消息并且将其插入在经编码的分组中的一个或多个经编码的分组中,和/或插入在经编码的分组中的两个或更多经编码的分组之间。第一消息模块458可以位于第一PHY模块460、第一MAC模块456中,和/或如所示出的位于第一PHY模块460与第一MAC模块456之间。经编码的分组和控制消息然后从第一消息模块458被转发给第一PHY模块460。
第一PHY模块460可以包括用于编码这些经编码的分组和该控制消息(统称为经编码的信号)的PCS PHY编码器模块462。第一PHY模块460将经编码的信号传输给第二设备452。除了由第一PHY模块460执行的串化解串器操作之外,PCS PHY编码器模块462可以执行PSC协议。PCS协议支持控制字符(例如,每个控制字符在长度上是8比特或10比特)、控制字(例如,每个控制字在长度上是64比特或66比特),等等。
第二设备452包括第二PHY模块464、第二消息模块466、第二MAC模块468、以及第二控制模块470。第二PHY模块464接收经编码的信号。第二PHY模块464可以包括PCS解码器模块472,PCS解码器模块472对总信号进行解码以提供经编码的分组和控制消息。第二消息模块466从经编码的分组中检测并移除控制消息,并且将经编码的分组转发给第二MAC模块468。控制消息可以被转发给第二控制模块470。第二消息模块466可以位于第二PHY模块464、第二MAC模块468中、和/或如所示出的位于第二PHY模块464与第二MAC模块468之间。第二MAC模块468可以执行不支持控制消息的MAC协议(例如,分组传输协议)。因为这个原因,在这些分组由第二MAC模块468接收之前,控制消息被移除。第二MAC模块468可以包括PCSMAC解码器模块469,PCS MAC解码器模块469对从第二消息模块466接收的分组进行解码。
上面所描述的透明消息插入技术为在设备和/或对应的控制模块之间传送的消息提供了低时延。透明消息插入技术包括,(i)通过将没有被MAC协议使用的控制字节或控制字插入到MAC数据流的分组中来传送控制消息,以及(ii)将该控制消息与分组一起传输。在接收端处(例如,在第二设备452处),该控制字节或控制字被检测,并且该控制消息从该MAC数据流中被提取并删除。第二MAC模块468不接收该控制消息。在一种实施方式中,长分组的传输被中断以插入控制消息。长分组可以是具有比预定长度大的长度的分组。长分组的一个示例长度是9千字节。该分组的第一部分被传输,之后是控制消息,之后是该分组的第二部分。
分组解塌缩
图10示出了图示出分组中断的接入机架(例如,图1和3的接入机架12、102、104之一)的一部分480。部分480包括iICM 482、484和交叉开关模块486。交叉开关模块486可以从第一iICM 482接收第一分组487,并且从第二iICM 484接收第二分组489。第一分组487可以是具有比第一预定长度大的长度的长分组。第二分组489可以是具有比第二预定长度小的长度的短分组。第一预定长度可以大于或等于第二预定长度。尽管调度器模块可以执行分组调度来防止对交叉开关模块486的出口链路的过度订购,但是归因于例如抖动而可能发生第二分组的传输中的延迟。过度订购是指在相同时间为多于一个分组的传输对相同链路的调度。
当调度器模块(例如,本文所公开的调度器模块中的任何调度器模块)调度第一分组487在交叉开关模块486的出口链路490上被传输并且然后调度第二分组489在相同出口链路490上被传输时,过度订购可能发生。出口链路490连接在交叉开关模块486与eICM之间。例如,当第二分组489在第一分组487之前被调度,但是(i)第二分组489从第一iICM的传输被延迟,和/或(ii)由交叉开关模块486对第二分组489的接收被延迟时,过度订购也可能发生。交叉开关模块486可以在分组487、489被接收时将分组487、489存储在单个先入先出(FIFO)存储器492中。因为这个原因,第一分组487可以在第二分组489之前被存储在FIFO存储器492中。
交叉开关模块486可以在接收到第一分组487的第一部分之后或者在发起第一分组487的传输之后接收第二分组489。为了防止短分组以完整长度和/或长分组的一部分被延迟,交叉开关模块486可以暂停第一分组487的传输并且传输第二分组489。一经传输第二分组489,第一分组487的传输可以继续。在所示出的示例中,第一分组487的第一部分494被传输,之后是第二分组489,之后是第一分组487的第二部分496。这使得短分组通过交叉开关模块486可能被延迟的最大延迟最小化。作为结果,用于第二分组489从交叉开关模块486的传输的最大延迟可以是第一分组487的第一部分494的长度。调度器模块可以不知道对第一分组487的传输的暂停和继续。
在一种实施方式中,交叉开关模块486将一个头部添加至第一分组487的第一部分494和/或第二部分496,之后传输第一部分494和/或第二部分496。按照部分494、496被接收的顺序,从交叉开关模块486转发部分494、496。这些头部可以每个都指示部分494、496中的每个部分的长度、第一分组487的部分的数目、第一分组487的标识符、一个或多个交叉开关模块的标识符、eICM的标识符、和/或eICM的出口端口的标识符。
交叉开关模块486(其可以代替本文所公开的任何交叉开关模块)可以对具有比预定长度(例如,1024比特)大的长度的单播分组进行分段,以减少对用于高优先级单播分组的背板时延的影响。可以在iICM与交叉开关模块之间的链路上,从ILQ模块作为多个单播分组来传输单播分组的各部分(或者各组块)。原始的单播分组可以被划分为任何数目的单播分组。iICM可以生成释放信号,该释放信号指示了传输该多个单播分组花费的时间量。如上面所描述的,该释放信号可以被传输给调度器模块。iICM可以将一个头部添加至被传输给交叉开关模块486的单播分组中的一个或多个单播分组。该头部可以指示各部分和/或单播分组中的每个部分和/或单播分组的长度、部分和/或单播分组的数目、对应的原始单播分组的标识符、一个或多个交叉开关模块的标识符、eICM的标识符、和/或eICM的出口端口的标识符。在一种实施方式中,各部分和/或单播分组中的一个或多个部分和/或单播分组包括CRC比特。
图11示出了用于分组重排序和重组装的接入网络的一部分500。接入网络的部分500包括iICM 502、交换网络504、以及eICM 506。iICM 502包括ILQ模块508,ILQ模块508存储数据分组以用于经由交换网络504传输给eICM 506。如本文所公开的,交换网络504包括一个或多个交叉开关模块。eICM 506包括ELQ模块510、ROB模块512、重组装模块514、EPQ模块516、以及出口接口518。ELQ模块510存储从交换网络504接收的分组。归因于例如分组解塌缩和/或分组分段,ROB模块512可以基于分组的头部来对ELQ模块510中存储的分组(例如,单播分组)进行重排序。重组装模块514基于这些头部来重组装经重排序的分组,以形成原始所传输的分组。EPQ模块516控制经重组装的分组从出口接口518的传输。作为结果,在分组从出口接口518的传输之前,在eICM 506中执行对这些分组的恰当重排序,并且长分组和/或经分段的分组完全被重组装。
多播
图12示出了图示出分组分段的示图。iICM可以将一个或多个单播分组插入和/或交织在多播传输中。单播分组可以被称为高优先级分组,并且多播分组可以被称为低优先级分组。多播分组的传输可以被暂停以传输一个或多个单播分组。这防止了单播分组被多播分组延迟。图12示出了单个多播分组和两个单播分组的示例传输。多播分组的第一部分530被传输,之后是第一单播分组532。多播分组的第二部分534然后被传输,之后是第二单播分组536。多播分组的第三部分538然后被传输。单播分组不可以被多播分组交织。可以一次在一个链路上传输单个多播分组。换另一方式来说,不可以在相同时间在一个链路上传输多个多播分组。
每个多播分组在从交叉开关模块被传输之前以其整体被存储在该交叉开关模块中。这被称为对多播分组的存储-和-转发。对多播分组的存储-和-转发允许交叉开关模块中断多播分组的传输。当iICM不具有单播分组要在一个或多个链路上转发时,该iICM可以在该一个或多个链路上将多播分组转发给一个或多个交叉开关模块。如果当一个或多个链路上正在传输多播分组时,iICM接收到针对单播分组在该一个或多个链路上的传输的ACK信号,则该iICM可以中断这些多播分组的传输来传输这些单播分组。归因于对多播分组的单播中断,在交叉开关模块的用于多播分组的链路上可以不提供最小量的带宽。
多播分组可以具有不同的优先级级别。低优先级多播分组的传输可以被暂停以允许高优先级多播分组的传输。如此,在低优先级多播分组的传输之前,完成高优先级多播分组的传输。
调度器模块(诸如上面所描述的调度器模块之一)监测链路以获得利用信息,并且使用该利用信息来调度单播分组。单播信息包括链路的流量活动性状况。调度器模块可以不使用该利用信息来调度多播分组,而是可以基于该利用信息来延迟单播分组的传输。
多播分组可以具有相同的多播标识符,并且可以遵循从iICM到一个或多个eICM的相同路径。iICM不为多播分组的传输向调度器模块发送请求信号,而是当所分配的路径上存在可用带宽时传输多播分组。iICM可以将释放信号发送给调度器模块,来指示一个或多个多播分组的传输和该一个或多个多播分组的长度。调度器模块然后可以更新与多播分组的所分配的路径的链路相关联的状况值,并且相应地调整单播分组的传输。
图13示出了图示出多播分组传输的接入网络的一部分550。接入网络的部分550包括iICM 552、交叉开关模块554、以及eICM 556。iICM 552包括BQ模块558,BQ模块558具有用于存储请求信号的队列560。通过箭头示出了被分配用于多播分组的传输的一个示例路径(由箭头562示出)。尽管该路径被分配用于多播分组的传输,但是该路径的部分和/或全部可以被用于相应的单播分组的传输。
该接入网络的架构可以被称为推送架构,因为没有使用调度器模块来调度多播分组的传输。基于多播分组的头部中的多播标识符,来沿着该路径接收并传输这些多播分组。iICM 552可以基于该多播标识符,将多播分组传输给交叉开关模块之一(例如,交叉开关模块2)。多播标识符可以被包括在多播分组的头部中。交叉开关模块可以基于多播标识符将这些多播分组传输给eICM2、n。可以基于多播标识符来设置交叉开关模块的出口链路。eICM可以基于多播标识符来设置出口端口。
该路径中的iICM 552、交叉开关模块2、eICM2、n、以及出口端口564可以每个都包括将多播标识符与链路标识符、输出端口标识符、和/或目的地标识符相联系的表格。作为一个示例,iICM 552中的该表格可以提供iICM 562与交叉开关模块2之间的链路的标识符,和/或iICM 552的将通过其来传输这些多播分组的对应输出端口的标识符。作为另一示例,交叉开关模块2中存储的该表格可以包括交叉开关模块2与eICM2、n之间的链路的标识符,和/或交叉开关模块2的将通过其来传输这些多播分组的对应输出端口的标识符。作为又另一示例,eICM2、n中存储的该表格可以包括将从其传输这些多播分组的一个或多个出口端口的标识符。
归因于多播分组和/或多播分组的各部分沿着相同路径的经排序的传输,在eICM2、n中不需要对多播分组的重排序。与一个多播标识符相关联的最大带宽可以是单个链路的传输速率(例如,25千兆比特每秒)。
iICM 552可以包括两种类型的队列。第一类型的队列可以专属于特定的多播标识符。第二类型的队列可以不专属于特定的多播标识符,并且可以存储具有不同多播标识符的多播分组。可以在执行“分组塌缩”时使用第一类型的队列。可以在不执行分组塌缩时使用第二类型的队列。关于多播分组,分组塌缩是指用以形成单个分组或分组集合的对具有相同多播标识符的分组的聚合。iICM 552可以针对单个聚合的分组或分组集合来生成单个分配请求和/或释放信号。该分配请求信号和/或释放信号可以指示单个聚合的分组或分组集合的总大小。
可以提供两个种类的服务用于多播分组。一个种类用于高优先级多播分组,并且另一种类用于低优先级(或尽力而为)多播分组。类似于单播分组,背板链路可以被预留用于高优先级多播分组。背板链路可以不被预留用于低优先级多播分组。
接收到高优先级多播分组的iICM可以生成分配请求,并且将该分配请求传输给调度器模块。调度器模块每多播标识符地存储完整的链路路径标识符,并且基于该高优先级多播分组的多播标识符可以延迟单播分组对相对应的路径的使用。这允许iICM传输该高优先级多播分组。该高优先级多播分组的路径中的链路不由调度器模块来分配,而是延迟使用这些链路用于单播分组。相对照地,iICM可以不针对低优先级多播分组生成分配请求信号,而是在带宽可用(即,没有被用于单播分组和/或高优先级多播分组)时沿着对应路径来转发低优先级多播分组。
上面所描述的对多播分组的传输在具有多播分组的传输的iICM、交叉开关模块和/或出口模块处提供了空间复制:从iICM到多个交叉开关模块;从交叉开关模块到多个交叉开关模块和/或到多个eICM;和/或在eICM内到eICM的多个出口端口。与多播标识符相关联的路径可以具有静态配置,因为该路径没有改变。多播标识符的多播分组遵循相同的背板链路。这防止了对于在eICM处对多播分组的重排序的需求。多播流的最大带宽可以基于该多播流的路径中的一个或多个链路的串行链路速度(例如,25千兆比特每秒)。
多播分组完整地被缓冲在交叉开关模块中而不“直通(cut-through)”。术语“直通”是指分组通过模块的传递而不将该分组存储在该模块中。作为一个示例,可以针对单播分组执行直通,以防止单播分组的传送中的延迟。
图14图示了一种处置多播分组和单播分组的方法。尽管主要关于图1-3和13的实施方式描述了以下的任务,但是这些任务可以容易地被修改以应用至本公开内容的其他实施方式。这些任何可以迭代地被执行。
该方法可以在600处开始。在602处,iICM(例如,ICM 32、52、140、142、552之一)接收分组。这些分组可以包括单播分组、高优先级多播分组、和/或低优先级多播分组。
在604处,iICM可以基于所接收的分组的头部来确定这些分组是否包括多播分组。这可以基于多播分组中的一个或多个多播分组的头部中的多播标识符。如果这些分组不包括多播分组,则任务606可以被执行,否则任务610被执行。
在606处,iICM将一个或多个单播分组转发给由调度器模块指配并且在被分配用于多播分组的路径中的一个或多个串行连接的交叉开关模块。
在608处,iICM可以将释放信号传输给调度器模块,以指示该一个或多个单播分组的传输。这允许调度器模块更新该一个或多个串行连接的交叉开关模块的链路的流量状况水平。
在609处,该一个或多个串行连接的交叉开关模块中的末尾交叉开关模块将该一个或多个单播分组转发给eICM,其中该一个或多个单播分组被转发给eICM的出口端口。在将该一个或多个单播分组转发给该出口端口之前,该一个或多个单播分组不被重排序。在执行任务609之后,该方法可以在638处结束。
在610处,iICM可以开始将这些多播分组传输给该一个或多个串行连接的交叉开关模块。
在612处,iICM可以基于这些多播分组的头部来确定这些多播分组是高优先级分组还是低优先级分组。如果存在一个或多个高优先级分组,则任务614可以被执行,否则任务616被执行。在614处,iICM可以将分配请求信号传输给调度器模块,如上面所描述的以在一个时间段内预留该路径用于高优先级多播分组。
在616处,iICM将所接收的多播分组中的一个或多个多播分组转发给该路径中的预分配的一个或多个交叉开关模块(即,该一个或多个串行连接的交叉开关模块)。在618处,iICM可以将释放信号传输给调度器模块,以指示从该iICM转发的该一个或多个多播分组的总大小。这可以被完成以用于链路状况更新的目的。
在620处,交叉开关模块中的一个交叉开关模块确定交叉开关模块中的该交叉开关模块中存储的分组是否包括一个或多个单播分组。如果交叉开关模块中的该交叉开关模块中没有存储一个或多个单播分组,则任务622被执行,否则任务624被执行。
在622处,所接收的多播分组从这些交叉开关模块被转发给该路径的一个或多个eICM的预分配的出口端口,而无需对该一个或多个多播分组的重排序。在执行任务622之后,该方法可以在638处结束。
在624处,预分配的交叉开关模块中的一个交叉开关模块暂停该一个或多个多播分组的传输。尽管没有示出在图14中,但是一个或多个多播分组的传输可以在iICM处被暂停。
在626处,iICM将所接收的一个或多个单播分组转发给由调度器模块指配的预分配的交叉开关模块。
在627处,iICM可以将释放信号传输给调度器模块,以指示这些单播分组从该iICM的传输。这可以被完成以用于链路状况更新的目的。
在628处,该一个或多个串行连接的交叉开关模块中的末尾交叉开关模块,将该一个或多个单播分组转发给与这些单播分组相对应的单个eICM,该单个eICM将该一个或多个分组转发给该eICM的出口端口。
在630处,与这些单播分组相对应的该单个eICM接收这些单播分组,并且基于这些单播分组的头部来确定这些单播分组是否需要被重排序。如果这些单播分组需要被重排序,则任务632被执行,否则任务634被执行。在632处,该eICM对这些单播分组重排序。
在634处,预分配的交叉开关模块将多播分组的剩余部分和/或剩余的多播分组转发给该一个或多个eICM和/或与这些多播分组的多播标识符相对应的出口端口。在执行任务636之后,该方法可以在438处结束。
上面所描述的任务旨在是说明性的示例;这些任务可以依次地、同步地、同时地、连续地、在交叠的时间段期间或者取决于应用按不同的顺序而被执行。此外,取决于事件的实施方式和/或次序,这些任务中的任何任务可以不被执行或者被跳过。
前述的描述在性质上仅是说明性的并且决不意图为限制本公开内容、它的应用或者使用。本公开内容的宽泛教导能够以各种形式来实施。因此,尽管本公开内容包括特定的示例,但是本公开内容的真实范围不应当被如此限制,因为一经研究示图、说明书、以及以下权利要求,其他的修改将变得明显。如本文所使用的,短语A、B和C中的至少一个应当被解释为使用非排他的逻辑“或”来意指一种逻辑(A或B或C)。应当理解,不变更本公开内容的原理,一种方法内的一个或多个步骤可以按不同顺序(或者同时地)被执行。
在本申请(包括下面的定义)中,术语“模块”可以用术语“电路”来代替。术语“模块”可以指代以下各项的一部分或者包括以下各项:专用集成电路(ASIC);数字、模拟、或混合模拟/数字分立电路;数字、模拟、或混合模拟/数字集成电路;组合的逻辑电路;现场可编程门阵列(FPGA);执行代码的(共享、专属、或组)处理器;存储由处理器执行的代码的(共享、专属、或组)存储器;提供所描述的功能的其他合适的硬件组件;或者上面这些中的一些或全部的组合,诸如在片上系统中。
如上面所使用的,术语“代码”可以包括软件、固件、和/或微代码,并且可以指代程序、例程、函数、类、和/或对象。术语“共享的处理器”涵盖了执行来自多个模块的一些或全部代码的单个处理器。术语“组处理器”涵盖了结合添加的处理器来执行来自一个或多个模块的一些或全部代码的处理器。术语“共享的存储器”涵盖了存储来自多个模块的一些或全部代码的单个存储器。术语“组存储器”涵盖了结合添加的存储器来存储来自一个或多个模块的一些或全部代码的存储器。术语“存储器”可以是术语“计算机可读介质”的子集。术语“计算机可读介质”不涵盖通过介质传播的瞬态电信号和电磁信号,并且因此可以被考虑为是有形的和非瞬态的。非瞬态有形计算机可读介质的非限制性示例包括非易失性存储器、易失性存储器、磁存贮器、以及光存贮器。
本申请中所描述的装置和方法可以通过由一个或多个处理器执行的一个或多个计算机程序来部分地或者完整地实施。这些计算机程序包括至少一个非瞬态有形计算机可读介质上存储的处理器可执行的指令。这些计算机程序还可以包括和/或依赖于所存储的数据。