用于在交换结构中分发缓冲区状态信息的装置和方法

文档序号:7581849阅读:174来源:国知局
专利名称:用于在交换结构中分发缓冲区状态信息的装置和方法
技术领域
本发明涉及通信设备,具体地说,涉及交换结构上的数据帧传输。
背景技术
在通信网络中,交换设备(“交换机”)在一组输入接口中的一个接口接收数据,而将该数据转发到一组输出接口中的一个或多个接口。用户一般需要这种交换设备的操作尽可能地快,以保持高的数据速率。交换机一般是数据链路层设备,其使得多个物理网络(例如本地局域网(LAN)或广域网(WAN))段可互连为一个更大的网络。交换机基于例如MAC地址来转发和泛播(flood)数据流量。最一般地说,这些类型的网络以帧的形式来传输数据。帧是在传输介质上作为数据链路层单元而被发送的信息的逻辑组。帧一般包括用于例如路由、同步和差错控制的头部和/或尾部信息。头部和/或尾部信息包围着包含在所述单元中的用户数据。信元、数据报、消息、分组和段等术语也用于描述OSI参考模型的各层和各种技术圈中的逻辑信息组。如此处所使用的,术语“帧”应当被最广义地理解,而且可包括其他术语例如信元、数据报、消息、分组和段。
图1示出了交换网络100例如LAN交换网络的简化方框图。在本例中,交换机包括交换结构110和多个线路卡120和130。因而交换机经由线路卡120和130,通过交换结构110将多个网络设备122、124、132和134连接起来。一般地,网络设备122、124、132和134可包括多种不同设备,包括计算机系统、输出设备、存储设备、通信设备或其他网络组件,例如路由器、其他交换机,甚至其他网络。
应当注意,在图1(以及在本申请的其他部分)中使用变量标识符“N”,是为了更清楚地指明一系列相关或类似元件的最后一个元件(例如线路卡N 130)。这种变量标识符的重复使用并不意味着这些元件序列的大小之间存在相关性,虽然也可能存在这样的相关性。这种变量标识符的使用不需要每个元件序列与以相同的变量标识符定义的其他序列具有相同数量的元件。相反,在每次使用时,由“N”标识的变量可以具有与相同变量标识符的其他情形相同或不同的值。
交换网络100可使用实现网络设备间的数据通信的多种不同通信协议中的一种或多种。线路卡120和130一般采用I/O接口卡的形式,其一般执行数据帧分析作为交换处理的一部分。交换结构110也可以用多种方式实现。三种常用的交换结构是单总线体系结构、共享存储器体系结构和纵横交换矩阵(crossbar)。单总线交换结构体系结构在交换机中使用中心结构元件,交换机的所有端口都与该中心结构元件进行通信。因为有一个中心交换元件,所以每个端口都对到该结构的访问进行仲裁。在共享存储器体系结构的情形中,由共享存储器来存储数据帧,而高速ASIC对该存储器进行读写。帧进入该体系结构,交换核将它们放入存储器,然后将它们排队到它们的外出端口。在该体系结构中,缓冲发生在交换结构的内部,而缓冲区可以是固定的或动态的。纵横交换矩阵使用交换结构内的网状结构来高速连接所有端口或所有线路卡。纵横交换矩阵对“平衡流量”来说可能是高效的,例如,如果端口1与端口2通信,端口3与端口4通信,则纵横交换矩阵将这些传输定向到不同路径。
纵横交换矩阵的一个主要好处是能够扩展为相当高的带宽和吞吐率。因此纵横交换矩阵是一种常用的交换结构。图2示出了现有技术中基于纵横交换矩阵的交换方案的几个部件。为了支持纵横交换矩阵200,交换结构110包括一个或多个输入缓冲区210和一个或多个输出缓冲区220。在一种典型实现中,交换结构中的每个端口都具有输入和输出缓冲区。结果,由于缓冲区与特定端口相关联,所以输入和输出缓冲区可与特定的线路卡相关联。在本例中,要从线路卡1120传输到线路卡N 130的数据帧首先在线路卡120的队列240中排队。队列240可被实现为使用多种存储器结构的先入先出(FIFO)缓冲区,如在现有技术中公知的那样。一旦数据帧已发送就绪,它就被串行化并通过串行通道来发送,在串行通道中,数据帧被交换结构110的输入缓冲区210接收。通过纵横交换矩阵200将所述数据帧发送到对应于适当的出口端口的输出缓冲区,在本情形下是输出缓冲区220。从输出缓冲区220,数据帧被串行化并发送到对应于输出缓冲区220端口的线路卡,在本情形下是线路卡N 130。数据一般被接收在队列(例如队列250)中。
由于输出缓冲区220一般可接收来自附接到交换结构110的任何输入端口的数据,即并不仅限于与输入缓冲区210和线路卡1120相关联的端口,因此可能发生拥塞问题。相应地,希望具有这样的交换结构体系结构,其可减小在其输出缓冲区处发生拥塞的可能,并在达到此目的的同时对交换结构的带宽、吞吐率和复杂度影响最小。

发明内容
已经发现,网络交换和/或路由设备可使用以下这种交换结构,其收集关于输出端口缓冲区状态的信息并将该信息分发到各个线路卡,用以避免数据帧拥塞。交换结构可收集所有输出端口的输出缓冲区状态信息,并将该信息以有效率的带内方式分发到每个线路卡。各个线路卡可使用该信息来确定使预定前往所述交换结构的数据帧从哪个线路卡虚拟输出队列中出列。线路卡还可收集与用于从交换结构接收数据的线路卡队列相关联的输出缓冲区状态信息。以类似于来自交换结构的输出缓冲区数据的方式来使用该数据。
相应地,本发明的一个方面提供了一种装备,包括多个输入端口;耦合到所述多个输入端口的交换机;以及耦合到所述交换机的多个输出端口。所述多个输出端口中的至少一个端口可操作来经由所述交换机从所述多个输入端口中的至少一个端口接收数据。所述多个输出端口中的所述至少一个端口包括输出缓冲区以及可操作来产生对应于所述输出缓冲区的缓冲区状态信息的输出缓冲区状态逻辑。
本发明的另一方面提供了一种方法。在交换结构的输出端口处接收数据。在至少一个输出缓冲区中存储所述数据。基于存储在所述输出缓冲区中的数据来确定输出缓冲区状态信息。向另一输出端口和线路卡中的至少一个发送所述输出缓冲区状态信息。
本发明的另一方面提供了一种装备,包括至少一个I/O端口、数据帧转发引擎、队列管理器、缓冲区和输出缓冲区状态逻辑。所述至少一个I/O端口可操作来连接到网络设备。所述数据帧转发引擎耦合到所述至少一个I/O端口。所述队列管理器耦合到所述数据帧转发引擎,并可操作来建立并管理多个虚拟输出队列。所述缓冲区耦合到所述数据帧转发引擎,并可操作来接收来自交换结构的数据帧。所述输出缓冲区状态逻辑耦合到所述缓冲区,并可操作来产生对应于所述输出缓冲区内容的输出缓冲区状态信息。
本发明的另一方面提供了一种装备,包括用于接收来自至少一个线路卡的数据的多个装置;用于传输从所述用于接收来自至少一个线路卡的数据的多个装置而来的数据的交换机装置,所述交换机装置耦合到所述用于接收来自至少一个线路卡的数据的多个装置;用于接收和存储来自所述交换机装置的数据的多个装置,所述用于接收和存储来自所述交换机装置的数据的多个装置耦合到所述交换机装置;以及用于确定与所述用于接收和存储来自所述交换机装置的数据的多个装置中的至少一个装置的内容相对应的状态信息的至少一个装置,所述用于确定状态信息的至少一个装置被耦合到用于接收和存储来自所述交换机装置的数据的多个装置中的所述至少一个装置。
上文是概述性的,因此必要地包含了简化、概括和对细节的省略,因此,本领域的技术人员将理解到,发明内容部分仅是示意性的而非限制性的。本领域的技术人员将很清楚,这里公开的操作可以多种方式实现,并可作出不偏离本发明及其更广范围的改变和修改。本发明的其他方面、创造性特征和优点仅由权利要求来限定,并将通过下面的非限制性详细描述而变得清楚。


通过参照下面的说明和附图,可获得对本发明及其优点的更完整理解,在附图中,相同的标号指示相同的部件。
图1是交换网络的简化方框图。
图2是现有技术的基于纵横交换矩阵的交换方案的几个部件的简化方框图。
图3是结构交换机(fabric switch)的简化方框图。
图4是图3的结构交换机的输出端口的简化方框图。
图5示出了支持本发明技术的存储器组织的实施例。
图6是线路卡的简化方框图。
具体实施例方式
下面至少列出了对用于实施此处所述的一种或多种设备和/或过程的最佳预期方式的详细说明。本说明将是示意性的而不应被理解为限制性的。
图3示出了结构交换机的简化方框图。来自各线路卡的数据帧被转发到结构交换机300,并在输入端口310和320处被接收。一般地,对于结构交换机300所支持的每个线路卡,至少存在一个输入端口。数据作为串行化的数据流到达输入端口。如果数据流包括线路卡输出缓冲区状态信息,如下面将结合图6所详细讨论的那样,则该信息从数据流中被分离出来,并被转发到输出缓冲区状态数据控制器340。在通过纵横交换矩阵350被发送到适当的输出端口例如输出端口380和/或390之前,数据帧被存储在输入缓冲区315和325中。与输入端口的情形一样,对于结构交换机300所支持的每个线路卡,至少存在一个输出端口。在一些实现方案中,每个线路卡有多个输入端口和/或输出端口,以支持例如冗余部件。
可以用本领域普通技术人员所公知的多种方式来实现纵横交换矩阵350。例如,纵横交换矩阵350可包括用于接收来自交换结构输入缓冲区的帧(或帧的一部分)的输入端口模块(未示出)。纵横交换矩阵还可包括具有仲裁器电路的输出端口模块(未示出),所述仲裁器电路控制对输出端口模块的访问。当仲裁器确认所请求的传输时,对应的输入端口模块发送帧进入纵横交换矩阵。确认所述传输的输出端口模块接收该帧并将其发送到输出缓冲区例如输出缓冲区383或393。纵横交换矩阵中的输入端口和输出端口的互连一般是使用一条或多条数据总线、仲裁总线和复用器来实现的。
在一种实施方式中,结构交换机300从任意端口取得输入帧,并将它们全部存储在该端口的输入缓冲区中。从该处,结构交换机300对由接收帧中的嵌入数据字段所指定的(多个)输出端口进行仲裁。例如,可通过数据帧中的一位或多位来指定出口端口(PoE)。结构交换机将帧传输到与出口端口位所指定的端口相对应的输出缓冲区,例如输出缓冲区383和393。可断言多个出口端口位以将帧发送到多个目的地。在完成仲裁后,数据将从输入缓冲区存储器流动到输出缓冲区存储器。当帧被全部接收在输出缓冲区中之后,可将帧通过输出端口移动到目的地线路卡,进而移动到目的地网络设备。
输出端口380和390还分别包括输出缓冲区状态(OBS)逻辑385和395,以监控输出缓冲区的状态尤其是输出缓冲区的充满程度,向与各输出端口相关联的线路卡提供输出缓冲区状态信息,经由OBS数据控制器340接收来自其他输出缓冲区的输出缓冲区状态信息,以及/或者向OBS数据控制器340提供输出缓冲区状态信息。每个输出端口将正常数据流与输出缓冲区状态信息进行合并,其中输出缓冲区状态信息可包括例如以下控制字,所述控制字中有几位表明该控制字是OBS控制字,还有其他几位描述缓冲区充满程度和/或容量信息。合并后的数据流被串行化并被发送到适当的线路卡。
在一种实施方式中,输出缓冲区状态信息以带内方式被从输出端口分发到各线路卡。更具体地说,输出缓冲区状态信息被插入到正常数据流中,从而不需要额外的带外数据路径。向交换结构和线路卡体系结构增加带外数据路径会增加设备的复杂度和成本,还使得将较新的交换结构和/或线路卡与较老的设备例如上一代底板硬件一起使用更成问题。
此外,由于通常网络交换机中给定的线路卡需要能够与网络交换机中的每个其他线路卡进行通信,因此希望每个线路卡具有交换结构中所有输出缓冲区的输出缓冲区状态信息。因此在图3的实施例中,希望耦合到输出端口1380的线路卡具有以下这些输出缓冲区的输出缓冲区状态信息,所述输出缓冲区是输出端口1380的输出缓冲区383、输出端口2390的输出缓冲区393以及交换结构300的任何其他输出缓冲区。为了以有效率的方式来达到此目的,由OBS数据控制器340来收集交换结构300的每个输出缓冲区的输出缓冲区状态信息。OBS数据控制器340还将所述信息分发到与每个输出端口相关联的OBS逻辑。结果,每个输出端口具有与交换结构的输出端口相关联的所有输出缓冲区的输出缓冲区信息。因此,例如,OBS逻辑385可使得与交换结构300的输出端口相关联的所有输出缓冲区的输出缓冲区状态信息被发送到耦合到输出端口1380的线路卡。通过集中地收集和打包输出缓冲区状态信息,交换结构300可以用少量的数据传输来同时更新所有线路卡。
图4示出了结构交换机300的输出端口1380的一种实现方案的简化方框图。通过纵横交换矩阵接口400,从纵横交换矩阵350接收预定前往输出端口1380的数据。到达的数据被累积成一个或多个存储器字,此时写电路与存储器控制器410协作,将数据写入存储器420。于是,可在存储器420中在逻辑上实现输出缓冲区383。在一种实施方式中,如果发送到输出缓冲区的数据不能被存储在存储器420中,则输出缓冲区将丢弃所有这样的数据。仅当帧的开头已到达,并且存储器420中有用于该传输的空间时,数据才开始被存储在存储器420中。如果在接收帧时存储器420用尽了空间,则传输一般会终止,并设置适当的控制位。这种异常终止的帧将被发送到线路卡,线路卡将执行必要的校验,例如CRC校验。在本实施例中,线路卡将确定在帧中存在差错,并且帧将被丢弃。
数据帧从输出端口1380的发送是由发送状态机430来控制的。发送状态机430与存储器控制器410协作从存储器420中移出帧,插入所需的控制信息,并经由复用器440将数据流转发到串行链路接口450。由于输出缓冲区380发送数据到线路卡,所以使用串行链路接口450来串行化数据。发送状态机430还与OBS逻辑385一起对将输出缓冲区状态信息插入数据流的操作进行调整。如图所示,OBS逻辑385一般包括输出缓冲区状态控制码产生电路,还包括输出缓冲区寄存器(例如描述存储器420中输出缓冲区的组织)、输出缓冲区状态门限寄存器,以及存储来自其他输出缓冲区的输出缓冲区状态信息的OBS寄存器。在一些实施方式中,将OBS逻辑385包括为发送状态机430的一部分,这是因为发送状态机430也向数据流中插入控制码/字,并基于输出缓冲区定义来操纵存储器420中的数据。在另一种实施方式中,OBS逻辑385中的一些寄存器(例如存储来自其他输出缓冲区的输出缓冲区状态信息的OBS寄存器)对于OBS逻辑385来说不是本地的,而是与交换结构300共用的某个寄存器空间的一部分。
图5示出了用于创建输出缓冲区383的存储器420的组织的实施例。存储器420在逻辑上按需要划分为一个或多个缓冲区。在本例中,示出了用于对数据进行排队的单个缓冲区。两个指针描述当前存储在缓冲区中的数据的边界。指针out_tail_pt 530描述要从队列移出的下一数据帧(或帧的一部分)的位置,而指针out_head_pt 520描述向队列增加数据的位置。指针wrap_out_pt 510用于设置输出缓冲区队列的回卷点(wrap point)。回卷点代表输出缓冲区队列结束的位置。当输出缓冲区队列的地址指针到达回卷点时,下一位置将是队列的第一位置。因此,指针510、520和530总地描述了输出缓冲区的组织,它们的值可存储在所示出的缓冲区寄存器中。本领域的普通技术人员将很容易地认识到,可使用多种不同的缓冲和存储器组织技术来实现高优先级和低优先级队列。
图5还示出了OBS门限值540、550、560和570。OBS门限值表明被数据填充的输出缓冲区存储器的门限百分比。OBS逻辑385使用所述门限值来确定应分发什么输出缓冲区状态信息。在一种实施方式中,将OBS门限值(代表被填充的缓冲区的百分比)540、550、560和570与占用的缓冲区空间的计数进行比较,而该值一般是使用指针out_tail_pt 530、out_head_pt 520和wrap_out_pt 510中的一个或多个来确定的。例如,使用所示门限可描述4个不同的级别。OBS门限0540代表充满的输出缓冲区,OBS门限1550代表处于或超过75%容量的输出缓冲区,OBS门限2560代表处于或超过50%容量的输出缓冲区,OBS门限3570代表处于或超过25%容量的输出缓冲区。在每种情形下,可基于OBS逻辑385的比较结果来分发对应的输出缓冲区状态信息。也可实现其他门限方案。例如,第一门限可表明输出缓冲区的填充程度在容量的0%到25%之间,第二门限可表明输出缓冲区的填充程度在容量的25%到50%之间,等等。可替换地,可使用更大或更小数量的门限。图5示出了以下方式的实施例,可以用这种方式来组织存储器420,以实现所希望的输出缓冲区。可实现多种不同的结构,以支持交换结构300的输出缓冲区。
在一种实施方式中,OBS逻辑385的门限寄存器例如为了确定是否已满足某个特定门限而存储描述门限值或级别本身的信息,还存储所要分发的指示输出缓冲区状态的对应状态值。输出缓冲区状态值一般与适当的控制码一起发送,其中所述控制码表明伴随信息指示的是输出缓冲区状态。一般地,存储在寄存器中的输出缓冲区状态门限值和状态值都是可编程的。
返回去看图4,OBS逻辑385将与输出缓冲区383的状态相对应的一个或多个输出缓冲区状态值转发到OBS数据控制器340。OBS逻辑385还从OBS数据控制器340接收与结构交换机中的其他输出缓冲区相对应的输出缓冲区状态值。OBS逻辑385还准备携带有输出缓冲区状态信息的控制字,以插入到离开输出端口380的数据流中。
在一种实施方式中,OBS控制字被插入到串行数据流中。控制字可包括以下信息,其专门标识出发送控制字和对应的输出缓冲区状态信息的端口。可替换地,控制码仅表明OBS信息跟随在所述码后,跟随的信息包括起始端口和状态信息。如前所述,下面这样的做法是有好处的,即给定端口将交换结构的所有输出端口上的所有输出缓冲区的输出缓冲区状态信息发送到对应于所述给定端口的线路卡。以此方式,线路卡可接收信息,并使用所接收的信息,以例如下述方式来形成到各个交换结构输出端口的流量,其中所述方式为选择将未完成的数据发送到拥塞较轻的第一输出端口,而不是将数据发送到拥塞情况比第一输出端口严重的另一输出端口。而且,通过在正常数据流中发送输出缓冲区信息,可获得上述带内通信的优点。
一般地,OBS控制码/字和它们的伴随信息可插入到数据流中的任意位置。例如,可将它们插入完整的数据帧之前或之后。可替换地,OBS控制码/字和伴随信息可插入到数据流的任意部分,从而它可中断数据帧。而且,OBS控制码/字可包括关于其他控制功能的信息。例如,OBS控制字还可包括例如帧末尾的帧定界信息、下一帧是高优先级、下一帧是低优先级,等等,从而可节约带宽。因此,单个的OBS控制字可完成一种或多种可能与输出缓冲区状态无关的其他控制功能。虽然输出缓冲区状态信息已被描述为包括关于输出缓冲区的充满程度的信息,但是输出缓冲区状态信息可包括多种与输出缓冲区有关的其他类型的信息。例如,已发送的状态信息可包括对应的输出缓冲区的容量。在这种实现方案中,接收交换结构输出缓冲区容量信息的线路卡可调节它自己的缓冲区的大小以减轻拥塞。
返回去看图3,在一些实现方式中使用多个结构交换机300,从而可支持大量的线路卡和/或更高的带宽。在这种位片式(bit-sliced)实现方案中,各个结构交换机是同步的,从而通过各自纵横交换矩阵的数据传输可几乎同时发生。同步和歪斜修正(de-skew)电路可被提供为线路卡和结构交换机之间的独立电路,例如不是结构交换机ASIC的一部分,或者同步和歪斜修正电路可被提供为结构交换机电路自身的一部分。而且,多个结构交换机中的一个可被指定为主结构交换机,而其他的被指定为从结构交换机。在这样的实施例中,结构交换机头部信息例如出口端口信息总是由主结构交换机接收的。主结构交换机做出一些或所有决定,并将这些决定经由同步总线传送到从结构交换机。完整的OBS控制码/字和对应的输出缓冲区状态信息可单独发送到主结构交换机,然后,主结构交换机可分发所述信息,或者所述信息可被分发到结构的每个片段。
交换结构300中示出的每个输入和输出端口仅包括一个输入或输出缓冲区。在可替换实施方式中,每个输入和/或输出端口可使用多个缓冲区,以例如实现缓冲区优先级的区别。这样的区别优先级对于实现服务质量(QoS)和服务类别(CoS)特征来说是很有用的。多优先级结构交换机方案的一个示例在美国专利申请序列号No.10/288,937中有所描述,该申请名为“Prioritization and Preemption of Data Frames Over a SwitchingFabric”,提交于2002年11月6日,发明者为Mick R.Jacobs和MichaelA.Benning(“′937申请”)。′937申请描述了高和低两个优先级,但本领域的普通技术人员将很容易地认识到,′937申请的设备和技术可延伸到多于两个优先级。而且,本申请的输出缓冲区状态技术可延伸到应用了例如′937申请中所述的那些优先级区分方案的交换结构。
图6示出了使用由交换结构300提供的输出缓冲区状态信息的线路卡的简化方框图。数据帧从多个网络设备经由I/O端口例如端口610和620到达线路卡600。数据帧还从交换结构例如交换结构300到达。来自交换结构的进入串行流在串行链路690被接收,被解串行化,并被传输到分离逻辑680。分离逻辑680检测从交换结构发送的OBS码,并将进入的输出缓冲区状态信息转发到队列管理器640。剩余的数据流存储在队列670中,并最终到达转发引擎630。一旦转发引擎630接收到进入的数据帧,转发引擎就将每个数据帧传输到适当的I/O端口,进而到达对应的网络设备。在一些实施方式中,分离逻辑680从数据流移出OBS码和对应的信息。
队列管理器640使用来自交换结构的输出缓冲区状态信息来建立并管理一个或多个虚拟输出队列650。外出的数据帧(即由转发引擎630从I/O端口接收,并且预定前往交换结构的数据帧)被传输到队列管理器640,在队列管理器640,它们被排列在适当的虚拟输出队列650中。虚拟输出队列用于避免交换结构中的过分拥塞。在一个实施例中,队列管理器640建立对应于每个交换结构输出缓冲区的虚拟输出队列。队列管理器640中的出列逻辑使用输出缓冲区状态信息来决定从哪个队列发送数据帧。例如,如果输出缓冲区状态信息表明交换结构的输出端口1的容量已被充满,则640可决定将帧发送到另一个不太拥塞的结构交换机输出端口,从而使帧从适当的虚拟输出队列出列。
在一些实施方式中,队列管理器640可使用以下出列算法,该算法考虑了一个或多个条件,例如包括输出缓冲区状态信息、服务质量要求以及带宽公平要求。这种算法的示例包括随机早期检测算法(RED;有时也称为“随机早期丢弃”或“随机早期抛弃”)或加权RED算法(WRED)或它们的变体之一,这些算法在本领域都是公知的,并在下面被统称为“RED算法”。最初的RED算法在S.Floyd and V.Jacobson,“RandomEarly Detection Gateways for Congestion Avoidance(用于拥塞避免的随机早期检测网关)”,IEEE/ACM Transactions on Networking,Vol.1,No.4(1993年8月)中有所描述(此后称为Floyd & Jacobson)。其他RED算法在V.Jacobson,K.Nichols,and K.Poduri,“RED in a different light(不同光中的RED)”,Technical report,1999年9月(见citeseer.nfnec.com/iacobson99red.html)中有所描述。
例如,RED背后的原理是,分组在拥塞发生前被有意丢弃,以预先防止拥塞的发生。对于要放入队列的每个分组,计算出反之刚好丢弃该分组的概率。RED算法要求该丢弃概率应随着平均队列大小的增加而增大。虽然线性概率曲线形状曾被认为是足够的,但是最近的工作表明,近似于指数的形状可提供更好的性能。因此,在RED算法中使用指数概率曲线可得到正面的效果。而且,概率曲线的最大概率构造可能不是必要的。只要简单地假设最大概率是1,RED就可以很好地工作。在另一实施例中,使用了可编程的概率曲线,从而可以构造例如线性曲线或指数曲线。最小门限处的概率是0,最大门限处的概率是1,之间存在任意可构造曲线。
在一个实施例中,使用WRED算法使帧从虚拟输出队列出列,可基于例如在对应的虚拟输出队列中所占的空间、可用的队列存储器和输出缓冲区状态信息来对丢弃进行权衡。
线路卡600还可包括以下电路,该电路用于收集线路卡缓冲区状态信息、将该信息分发到各种其他线路卡和交换结构输出缓冲区,并将该信息用于拥塞控制。例如,这种缓冲区状态信息可从队列670提取,由去往结构的OBS逻辑660以和上述OBS逻辑基本相同的方式来处理,并转发到其他交换机组件。一旦被合并到线路卡600的外出数据流中,附加的线路卡输出缓冲区状态信息就可被交换结构300的输入端口中的逻辑(见图3)接收。该输出缓冲区状态信息从数据流中被提取出来,并被转发到OBS数据控制器340,在OBS数据控制器340,该输出缓冲区状态信息被分发到所有输出端口,从而交换机中的每个线路卡最终都将接收到附加的输出缓冲区状态信息。
在一种实施方式中,以与使用交换结构输出端口输出缓冲区状态信息基本相同的方式,线路卡的队列管理器使用来自其他线路卡的线路卡输出缓冲区状态信息来选择数据帧从中出列的虚拟输出队列。例如,当给定的交换结构输出端口的输出缓冲区可能不太拥塞时,例如填充到其容量的25%时,交换结构输出端口发送帧进入的对应线路卡队列可能接近100%容量。使用这样的信息,另一有数据要发送到交换结构输出端口的队列管理器,因而已拥塞的对应线路卡队列可选择从另一虚拟输出队列发送数据。因此,即使可能未在交换结构输出端口处遇到拥塞,也可能在对应的线路卡处遇到拥塞。以此方式,可避免一些流量拥塞。
应当注意,线路卡例如线路卡600一般包括多个其他组件,以支持本申请未描述或示出的多种帧处理和交换功能。如上所述的结构交换机可与不支持所述输出缓冲区状态信息的线路卡结合起来使用。在这种情况下,结构交换机可被配置为倒退为一种更加简化的操作模式。例如,如果结构交换机300正在对不使用输出缓冲区状态信息的线路卡进行发送,则结构交换机可被配置为仍旧收集和分发这样的信息,因为交换机中的某些线路卡可能使用该信息。
本申请所描述的线路卡和交换结构可用于多种设备,包括网络交换机、交换式路由器、路由器、路由式交换机和存储网络设备。在本说明书中,使用术语“交换机”来描述在网络上基于地址信息来引导信息的设备。本领域的技术人员将理解,这种设备包括例如交换机和路由器。例如,交换机可基于包含在分组中的地址信息来引导信息分组。但是,本发明的实施方式并不限于在交换机中使用,而是可用于网络中的任意点。因此,这里使用的术语“网络”应广义地理解为任何这样的通信系统,所述通信系统中所运送的信息具有可监控的特性。而且,虽然本发明主要关注因特网协议(IP)分组流,但是本领域的技术人员将认识到,IP以外的其他(例如以太网)协议和流可从本发明及其可替换实施方式中获益。相应地,本发明并不限于任何特定类型的协议或分组格式。
虽然上述设备和技术关注的是使用纵横交换矩阵的交换结构实现,但是也可使用其他类型的交换结构例如单总线体系结构和共享存储器体系结构。
虽然结合具体的优选实施例描述了本发明,但是本领域的技术人员可作出多种改变和修改,本发明将包括这些落在所附权利要求的范围中的改变和修改。
权利要求
1.一种装备,包括多个输入端口;耦合到所述多个输入端口的交换机;以及耦合到所述交换机的多个输出端口,所述多个输出端口中的至少一个端口可操作来经由所述交换机从所述多个输入端口中的至少一个端口接收数据,所述多个输出端口中的所述至少一个端口包括输出缓冲区;和可操作来产生与所述输出缓冲区相对应的缓冲区状态信息的输出缓冲区状态逻辑。
2.如权利要求1所述的装备,其中所述输出缓冲区状态逻辑还可操作来向至少一个线路卡发送所述输出缓冲区状态信息。
3.如权利要求1所述的装备,其中所述输出缓冲区状态逻辑还可操作来向至少一个其他输出端口发送所述输出缓冲区状态信息。
4.如权利要求1所述的装备,其中所述输出缓冲区状态信息包括至少一个值,所述至少一个值表明所述输出缓冲区所在的存储器中的对应存储器存储门限。
5.如权利要求1所述的装备,其中所述输出缓冲区状态信息包括输出缓冲区状态命令和输出缓冲区状态值。
6.如权利要求1所述的装备,还包括多个寄存器,所述多个寄存器可操作来存储至少一个输出缓冲区状态门限值。
7.如权利要求1所述的装备,其中所述多个输出端口中的所述至少一个端口还包括至少一个附加输出缓冲区,所述输出缓冲区和所述至少一个附加输出缓冲区中的每一个存储具有各自的优先级的数据。
8.如权利要求1所述的装备,其中所述交换机包括纵横交换矩阵、单数据总线和共享存储器中的至少一个。
9.如权利要求1所述的装备,还包括多个线路卡,所述多个线路卡中的每一个都可耦合到至少一个网络设备,并向所述至少一个网络设备发送数据或从所述至少一个网络设备接收数据;其中所述多个线路卡中的每一个都分别耦合到所述多个输出端口中的一个,并且其中所述多个线路卡中的每一个都分别耦合到所述多个输入端口中的一个。
10.如权利要求9所述的装备,其中所述多个线路卡中的至少一个包括队列管理器,所述队列管理器可操作来接收所述输出缓冲区状态信息,并根据所述输出缓冲区状态信息来使至少一个数据帧出列。
11.如权利要求10所述的装备,其中所述队列管理器还可操作来建立多个输出队列,并根据拥塞避免算法来选择所述至少一个数据帧。
12.如权利要求1所述的装备,还包括耦合到所述多个输出端口中的所述至少一个端口的输出缓冲区状态数据控制器,所述输出缓冲区状态数据控制器可操作来接收所述输出缓冲区状态信息。
13.如权利要求12所述的装备,其中所述输出缓冲区状态数据控制器耦合到所述多个输出端口中的至少一个其他输出端口,而且所述输出缓冲区状态数据控制器还可操作来向所述多个输出端口中的所述至少一个其他输出端口发送所述输出缓冲区状态信息。
14.如权利要求12所述的装备,其中所述多个输入端口中的至少一个端口还包括输出缓冲区状态信息分离逻辑,所述输出缓冲区状态信息分离逻辑可操作来从由所述多个输入端口中的所述至少一个端口接收的数据中提取出附加的输出缓冲区状态信息,并将所述附加的输出缓冲区状态信息发送到所述输出缓冲区状态数据控制器。
15.如权利要求1所述的装备,其中所述多个输入端口中的至少一个端口还包括输出缓冲区状态信息分离逻辑,所述输出缓冲区状态信息分离逻辑可操作来从由所述多个输入端口中的所述至少一个端口接收的数据中提取出附加的输出缓冲区状态信息,并将所述附加的输出缓冲区状态信息发送到所述多个输出端口中的所述至少一个端口。
16.一种方法,包括在交换结构的输出端口处接收数据;在至少一个输出缓冲区中存储所述数据;基于存储在所述输出缓冲区中的数据来确定输出缓冲区状态信息;向另一输出端口和线路卡中的至少一个发送所述输出缓冲区状态信息。
17.如权利要求16所述的方法,其中所述向另一输出端口和线路卡中的至少一个发送所述输出缓冲区状态信息的操作还包括向输出缓冲区状态数据控制器发送所述输出缓冲区状态信息;以及从所述输出缓冲区状态数据控制器向另一输出端口发送所述输出缓冲区状态信息。
18.如权利要求16所述的方法,其中所述输出缓冲区状态信息包括至少一个值,所述至少一个值表明所述输出缓冲区所在的存储器中的对应存储器存储门限。
19.如权利要求16所述的方法,其中所述输出缓冲区状态信息包括输出缓冲区状态命令和输出缓冲区状态值。
20.如权利要求16所述的方法,还包括确定至少一个输出缓冲区状态控制码;以及与所述输出缓冲区状态信息一起发送所述至少一个输出缓冲区状态控制码。
21.如权利要求16所述的方法,还包括在寄存器中存储至少一个输出缓冲区状态门限值。
22.如权利要求21所述的方法,其中所述确定输出缓冲区状态信息的操作还包括将所述至少一个输出缓冲区状态门限值与至少一个输出缓冲区指针进行比较。
23.如权利要求16所述的方法,其中所述至少一个输出缓冲区包括第一输出缓冲区和第二输出缓冲区,所述方法还包括在所述第一输出缓冲区中存储具有第一优先级的数据;以及在所述第二输出缓冲区中存储具有第二优先级的数据。
24.如权利要求16所述的方法,还包括在所述线路卡处接收所述输出缓冲区状态信息;以及根据所述输出缓冲区状态信息,使所述线路卡的队列中的至少一个数据帧出列。
25.如权利要求24所述的方法,其中所述出列操作还包括使用拥塞避免算法。
26.如权利要求16所述的方法,还包括在耦合到所述交换结构的输入端口处接收附加数据;从所述附加数据中提取出附加的输出缓冲区状态信息;以及将所述附加的输出缓冲区状态信息发送到所述输出端口和输出缓冲区状态数据控制器中的至少一个。
27.如权利要求16所述的方法,其中所述交换结构实现纵横交换矩阵、单总线体系结构和共享存储器体系结构中的至少一个。
28.一种装备,包括可操作来连接到网络设备的至少一个I/O端口;耦合到所述至少一个I/O端口的数据帧转发引擎;耦合到所述数据帧转发引擎的队列管理器,所述队列管理器可操作来建立并管理多个虚拟输出队列;耦合到所述数据帧转发引擎的缓冲区,所述缓冲区可操作来接收来自交换结构的数据帧;以及耦合到所述缓冲区的输出缓冲区状态逻辑,所述输出缓冲区状态逻辑可操作来产生与所述输出缓冲区内容相对应的输出缓冲区状态信息。
29.如权利要求28所述的装备,其中所述输出缓冲区状态逻辑还可操作来向所述交换结构发送所述输出缓冲区状态信息。
30.如权利要求28所述的装备,其中所述输出缓冲区状态信息包括至少一个值,所述至少一个值表明所述输出缓冲区所在的存储器中的对应存储器存储门限。
31.如权利要求28所述的装备,其中所述输出缓冲区状态信息包括输出缓冲区状态命令和输出缓冲区状态值。
32.如权利要求28所述的装备,还包括多个寄存器,所述多个寄存器可操作来存储至少一个输出缓冲区状态门限值。
33.如权利要求28所述的装备,其中所述队列管理器还可操作来接收所述输出缓冲区状态信息,并根据所述输出缓冲区状态信息,使所述多个虚拟输出队列的至少一个中的至少一个数据帧出列。
34.如权利要求28所述的装备,其中所述队列管理器还可操作来接收来自所述交换结构的附加输出缓冲区状态信息。
35.一种装备,包括用于接收来自至少一个线路卡的数据的多个装置;用于传输从所述用于接收来自至少一个线路卡的数据的多个装置而来的数据的交换机装置,所述交换机装置耦合到所述用于接收来自至少一个线路卡的数据的多个装置;用于接收和存储来自所述交换机装置的数据的多个装置,所述用于接收和存储来自所述交换机装置的数据的多个装置耦合到所述交换机装置;以及用于确定与所述用于接收和存储来自所述交换机装置的数据的多个装置中的至少一个装置的内容相对应的状态信息的至少一个装置,所述用于确定状态信息的至少一个装置被耦合到所述用于接收和存储来自所述交换机装置的数据的多个装置中的所述至少一个装置。
36.如权利要求35所述的装备,其中所述用于确定状态信息的至少一个装置还可操作来向至少一个其他线路卡发送所述状态信息。
37.如权利要求35所述的装备,其中所述状态信息包括至少一个值,所述至少一个值表明对应的存储器存储门限。
38.如权利要求35所述的装备,其中用于接收和存储来自所述交换机装置的数据的多个装置中的第一装置存储具有第一优先级的数据,其中用于接收和存储来自所述交换机装置的数据的多个装置中的第二装置存储具有第二优先级的数据。
39.如权利要求35所述的装备,其中所述用于接收和存储来自所述交换机装置的数据的多个装置包括用于接收来自所述交换机装置的数据的第一和第二装置,其中所述用于确定状态信息的至少一个装置包括用于确定状态信息的第一和第二装置,所述用于确定状态信息的第一装置耦合到所述用于接收和存储来自所述交换机装置的数据的第一装置,而所述用于确定状态信息的第二装置耦合到所述用于接收和存储来自所述交换机装置的数据的第二装置,所述装备还包括用于控制状态信息的装置,该装置用于确定状态信息。
40.如权利要求39所述的装备,其中所述用于控制状态信息的装置还可操作来向所述用于接收和存储来自所述交换机装置的数据的第一和第二装置中的至少一个发送状态信息。
41.如权利要求35所述的装备,还包括用于从数据流中分离状态信息的装置,所述用于从数据流中分离状态信息的装置耦合到所述用于接收来自至少一个线路卡的数据的多个装置中的至少一个装置。
全文摘要
网络交换设备和/或路由设备可使用以下这种交换结构,其收集关于输出端口缓冲区状态的信息并将该信息分发到多个线路卡,用以避免数据帧拥塞。所述交换结构可以收集所有输出端口的输出缓冲区状态信息,并将该信息以有效率的带内方式分发到每个线路卡。各个线路卡可使用该信息来确定使预定前往所述交换结构的数据帧从哪个线路卡虚拟输出队列中出列。线路卡还可收集与用于从交换结构接收数据的线路卡队列相关联的输出缓冲区状态信息。以类似于来自交换结构的输出缓冲区数据的方式来使用该数据。
文档编号H04L12/56GK1717669SQ200380104270
公开日2006年1月4日 申请日期2003年11月5日 优先权日2002年11月26日
发明者米克·R·雅各布斯, 马修·托德·劳森, 迈克尔·A·本宁 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1