用于与交换机结构相关的流控制的方法和装置的制造方法_4

文档序号:9567080阅读:来源:国知局
这样的实施例中,经由一连接,流控制模块330向源设备310、311、312和313发送流控制包500,其中,该连接与发送数据包400至交换机320所通过的那个连接相同(和/或在相同的连接平面的内)。使用优先级标识符530,在交换机结构系统300的数据平面内,可给予流控制信号500优于数据信号的优先级。相应地,在这样的实施例中,与在流控制模块330和源设备310、311、312和313之间发送流控制信号500相关的延时可小于与在源设备310、311、312和313和交换机320之间发送数据包400相关的延时。
[0066]源设备310、311、312和313接收流控制包500,并根据严重性标识符540采取适当的行动。在某些实施例中,举例来说,源设备310、311、312和313可标识出数据包源于与该源设备310、311、312和313相耦合的哪个外围处理设备(图3中未示出)(例如,使用流控制包500的源标识符510和/或图6中未示出的流控制包的其它部分),并向该外围处理设备发送流控制消息。在其它实施例中,响应于接收流控制包,源设备310、311、312和313可发送流控制消息至与其耦合的任意一个外围处理设备、源设备310、311、312和313从其接收到最大数目数据包的那个外围处理设备和/或与源设备310、311、312和313相耦合的任何其它外围处理设备。在某些实施例中,这样的流控制消息可以是标准流控制消息,例如,举例来说,IEEE 802.3x 以太网暂停、IEEE 802.1Qbb 优先级暂停、IEEE802.lQau QCN、QFC和/或诸如此类。外围处理设备可被设置为,作为接收到流控制消息结果,减少和/或中止向源设备310、311、312和313发送数据包。
[0067]在某些实施例中,源设备310、311、312和313可被设置为,在接收流控制包500的基础上,中止和/或减少向交换机320发送数据包。在其它实施例中,源设备310、311、312和313可被设置为,伴随着中止和/或减少该源设备310、311、312和313发送给交换机320的数据包,向外围处理设备发送流控制消息。这种外围处理设备所发送的和/或源设备310、311、312和313所发送的数据包的中止和/或减少,会导致交换机320处只接收到较少的数据包,并因此导致输出队列350中可用容量增加。
[0068]在某些实施例中,这种源设备310、311、312和313所发送的和/或一个或多个与该源设备310、311、312和313相耦合的外围处理设备所发送的数据包的减少和/或中止,可以持续一段时间。举例来说,从接收流控制信号算起,再经过预定长的时间之后,源设备310、311、312和313和/或一个或多个与该源设备310、311、312和313相耦合的外围处理设备可以以正常速率重新开始发送数据包。在其它实施例中,这种源设备310、311、312和313所发送的和/或一个或多个与该源设备310、311、312和313相耦合的外围处理设备所发送的数据包的减少和/或中止,可以持续到从流控制模块330接收重新开始消息。在这样的实施例中,在输出队列350的可用容量上升到高于阈值T1、T2和/或Τ3中的一个或多个之后,流控制模块330可定义重新开始信号并向源设备310、311、312和313发送该重新开始信号。
[0069]图7是根据本发明另一实施例的交换机结构系统600的示意图。交换机结构系统600包括交换机结构630、与该交换机结构630操作性耦合的多个边缘设备650以及与该边缘设备650操作性耦合的多个外围处理设备670。如同这里所进一步详细描述的那样,第一外围处理设备670 (例如,S1)被设置为,经由第一边缘设备650(例如,Ε1)、交换机结构630和第二边缘设备650 (例如,Ε3),向第二外围处理设备670 (例如,S5)发送数据包。
[0070]在结构和功能上,交换机结构630可类似于交换机结构200 (参照图2所描述和示出的)。相应地,交换机结构包括与交换机结构630的第一级632相关的模块F1-FN、与交换机结构630的第二级634相关的模块G1-GN以及与交换机结构630的第三级636相关的模块Η1-ΗΝ。经由数据通路,与第一级632相关的各模块F1-FN同与第二级634相关的模块G1-GN操作性耦合。类似地,与第三级636相关的各模块Η1-ΗΝ同与第二级634相关的模块G1-GN操作性耦合。可用任意一种设置为便于数据传送的方式,来构造与第一级632相关的模块F1-FN同与第二级634相关的模块G1-GN之间的数据通路,和/或与第二级634相关的模块G1-GN同与第三级636相关的模块Η1-ΗΝ之间的数据通路。在某些实施例中,举例来说,数据通路包括光连接器、光纤和/或模块间的电连接器。在某些实施例中,数据通路在中面或背面(backplane)内。
[0071 ]图8示出了交换机结构630内的模块G2。虽然所示出的模块G2与交换机结构630的第二级634相关(例如,参见图7),但是,在结构和功能上,与第一级632相关的模块和与第三级636相关的模块可类似于图8中所示的模块G2。模块G2包括多输入端口 760、多输出端口 770、多输出队列720以及包处理器750。此外,流控制模块730与模块G2操作性耦入口 ο
[0072]输入端口 760可以是任何适于从与交换机结构630的第一级632相关的模块F1-FN接收数据包的端口。相应地,经由与第一级632相关的模块F1-FN和模块G2之间的数据通路(参照图7),输入端口 760可以将该模块G2和该模块F1-FN操作性耦合。类似地,输出端口 770可以是任何适于向与交换机结构630的第三级636相关的模块H1-HN发送数据包的端口。相应地,经由与第三级相关的模块H1-HN和模块G2之间的数据通路,输出端口 770可以将该模块G2和该模块H1-HN操作性耦合。
[0073]在某些实施例中,模块G2包括用于各输出端口 770的输出队列720。相应地,如同这里所进一步详细描述的那样,包处理器750可以把将要在给定的输出端口 770上发送的数据包存储在它各自的输出队列720中。因而,输出队列720可被设置为,对在模块G2处经由输入端口 760而接收的数据包进行缓存。输出队列720可以是任何适当的输出队列。在某些实施例中,举例来说,输出队列720如同先入先出(FIFO)缓冲区那样工作。在这样的实施例中,经由输出端口 770,数据包以从包处理器750的接收顺序而发送。在其它实施例中,数据包可被分派优先级,这样,具有高优先级的那些数据包移到输出队列720的前部。在又一些其他实施例中,输出队列720可被构造和/或分成多个基于优先级的队列。
[0074]在某些实施例中,输出队列720可以是使用芯片上静态随机存取存储器(SRAM)而实现的共享存储缓冲区的一部分(图8中未不出),其为每一输入端口 760每一时间周期(例如,一个或多个时钟周期)写入一个输入数据单元(例如,一部分数据包)或数据包的包处理器750和所有每一时间周期读取一个输出数据单元或数据包的输出端口 770提供充分的带宽。共享存储缓冲区可被分区,以包括输出队列720。在某些实施例中,各输出端口770与输出队列720相关。因而,经由输出端口 770而发送的数据包被存储和/或缓存在与该输出端口 770相关的输出队列720中。
[0075]在某些实施例中,输出队列720的大小可以是动态和/或可变的。因而,基于在经由输出端口 770而发送的数据包的数目,可以扩展或压缩与该输出端口 770相关的输出队列720。举例来说,如果,在第一时间,与0队列1相关的输出端口 770具有的缓存的要发送的数据包和/或数据单元的数目,大于与0队列2相关的输出端口 770具有的数据包和/或数据单元的数目,则0队列1的大小可以大于0队列2的大小。类似地,如果,在第二时间,与0队列2相关的输出端口 770具有的缓存的要发送的数据包和/或数据单元的数目,大于与0队列1相关的输出端口 770的数据包和/或数据单元的数目,则0队列2的大小可以大于0队列1的大小。相应地,可基于各种输出队列720的需要和/或要求,动态地分配共享存储缓冲器。
[0076]在某些实施例中,各输出队列720可有最大尺寸。这确保了单输出队列720不会以损害另一个也使用共享存储器的输出队列720为代价,而使用该共享存储器大的或不公平的部分。在某些实施例中,当队列720超过它的最大尺寸时,可向流控制模块发送数据包,如同这里所进一步详细描述的那样。在某些实施例中,各输出队列720还可以有最小尺寸。这样的最小尺寸保证各输出队列720可以至少总是处理少量的数据包。
[0077]包处理器750可以是任何适当的处理器,其中,该适当的处理器应被设置为从输入端口 760接收和/或读取数据包、处理该数据包和/或路由该数据包,以及发送和/或存储该数据包至输出队列720。举例来说,包处理器750可以接收经由输入端口 760而接收数据包,其中,该输入端口 760将模块G2同与第一级632相关的模块F1-FN操作性耦合。这样的数据包可包括源ID和目的ID,且可类似于图5的数据包400。此外,在某些实施例中,举例来说,数据包可至少包括一部分IP五元组。在这样的实施例中,举例来说,头可包括目的MAC地址、目的IP地址、源MAC地址、源IP地址和/或传输协议。在其它实施例中,头可包括任何其它的与数据包相关的标识信息,例如,举例来说,优先级指示符。
[0078]包处理器750可使用头内的信息,以将数据包分派到与数据通路相关的输出队列720,其中,该数据通路把模块G2同与第三级636相关的模块H1-HN操作性耦合。举例来说,基于输出队列720的可用容量、基于散列函数的结果、基于查找表、基于来自中央控制器(图7和图8中未示出)的指示,和/或使用任何其它的方法,包处理器750可随机地分派数据包到输出队列720。这样的散列函数和/或查找表可使用输入作为头值,例如,举例来说,目的MAC地址、目的IP地址、源MAC地址、源IP地址、优先级指示符、传输协议和/或任何其它适当的值。在某些实施例中,举例来说,查找表和/或散列函数可将各输出队列720同一定范围的IP和/或MAC地址关联在一起。
[0079]在结构和功能上,流控制模块730可类似于参照图3所描述和示出的流控制模块330。因而,流控制模块730可以是任何适当的硬件模块和/或软件模块(在硬件中执行),这些模块被设置为监视输出队列720的可用容量。在某些实施例中,举例来说,流控制模块730可包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)和/或诸如此类的东西。在某些实施例中,流控制模块730可包括处理器和存储由该处理器执行的程序代码的存储器。
[0080]类似于流控制模块330 (图3),流控制模块730可监视输出队列720,并且,如果可用容量降到阈值之下,则向输出队列请求数据包。如同这里所进一步详细描述的那样,响应于数据包的接收,流控制模块730可定义和发送流控制包至发送数据包的那个边缘设备650。在某些实施例中,且如上所述,当输出队列720的可用容量下降时,流控制模块730可以以较高的速率从模块G2请求数据包。相应地,当存储在输出队列720的数据包的数目增加且输出队列720的可用容量下降时,流控制模块730可以定义和发送更多的流控制包。
[0081]在某些实施例中,流控制模块730分别地监视各输出队列720。相应地,举例来说,如果输出队列0队列1的可用容量降至阈值以下,则流控制模块730将从0队列1接收数据包,而不是从另一个输出队列720。在这样的例子中,流控制包将被发送至正向模块G2发送数据包的边缘设备650,而
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1