CN1881937B - 将存储空间动态分配给多个队列的方法及设备 - Google Patents
将存储空间动态分配给多个队列的方法及设备 Download PDFInfo
- Publication number
- CN1881937B CN1881937B CN2006100794016A CN200610079401A CN1881937B CN 1881937 B CN1881937 B CN 1881937B CN 2006100794016 A CN2006100794016 A CN 2006100794016A CN 200610079401 A CN200610079401 A CN 200610079401A CN 1881937 B CN1881937 B CN 1881937B
- Authority
- CN
- China
- Prior art keywords
- memory buffer
- port
- data
- memory
- formation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2408—Traffic characterised by specific attributes, e.g. priority or QoS for supporting different services, e.g. a differentiated services [DiffServ] type of service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种将存储空间动态分配给多个队列的网络设备。所述网络设备包括分配装置,用于为多个端口中的每一个分配预定数量的临时存储缓冲区和共享存储缓冲区,以及用来为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额,其中,在每个队列已经在临时存储缓冲区积累了预定部分的数据之后,这些数据就被送至共享存储器。所述用于分配的装置将共享存储器访问带宽减小预订的数量,其中所述预定的数量小于系统时钟的处理带宽。
Description
技术领域
本发明涉及分组交换网中的网络设备,更确切地说,涉及一种在与所述网络设备相关的的所有端口间共享存储单元且总带宽不超过系统时钟的方法。
背景技术
分组交换网络可以包括一个或多个网络设备,如以太网交换芯片,每个芯片都包含多个模块,所述模块用以对通过设备进行传输的信息进行处理。特别地,所述设备包括输入模块(ingress module)、存储管理单元(MMU)和输出模块(egress module)。输入模块包含用于确定分组应指向哪一个目的端口的交换功能。MMU用于存储分组信息和执行资源检测。输出模块用以执行分组修正并将分组传送到至少一个适当的目的端口。设备上的端口中的一个是CPU端口,使设备可以与外部交换/路由控制部分或CPU之间进行信息收发。
分组由多个端口进入设备之后,被送至输入模块,在那里对分组进行交换或其它处理。之后,分组通过MMU和输出模块被传送到一个或多个目的端口。MMU使不同的端口之间可以共享分组缓冲区,同时为每个输入端口、输出端口和各种服务队列提供资源保障。根据现有交换系统的构架,每个端口有8种相关服务队列。为保证端口和队列间的带宽保障,设备为端口至每个队列分配了固定的存储部分。这样,和具有较低优先级的服务种类的相关队列相比,可给具有较高优先级的服务种类的相关队列分配更多的固定部分。这样的应用很不灵活,且无法满足与一个或多个队列有关的动态要求。
一种更灵活的方法是通过确定需要为相关队列保留的缓冲区入口(entry)数量、对每个类别的服务队列定义一个有保障的固定存储配额。例如,如果对一个端口分配了100字节的存储空间,前4个服务队列的初始分配值为10个字节,后4个服务队列的初始分配值为5个字节。即使一个队列没有用尽所有的初始保留入口,那些没被使用的缓冲区也不会分配给其它队列。不过,该端口剩余未分配的40个字节的存储空间可以由与该端口有关的所有类别的服务队列共享。每个特定类别的服务队列可以消耗的共享存储池的大小范围由极限阈值设定。这样,极限阈值可以用来确定一个队列可以使用的缓冲区的最大数量,从而避免单个队列占用所有的可用存储缓冲区。为保证所有初始分配的存储空间值之和不大于该端口的可用存储空间的总数量,并保证每类服务队列都能访问其初始分配的存储配额,使用端口动态计数寄存器记录每个端口的可用存储池,其中动态计数寄存器记录的是端口的可用共享存储空间。端口动态计数寄存器的初始值是端口相关的所有存储量减去初始分配的存储缓冲区之和。当一类服务队列超出其初始配额之后占用可用存储空间时,动态计数寄存器值减小。相反,当一类服务队列超出其初始分配的配额之后释放存储空间时,动态计数寄存器值增大。
在目前的设备中,所有端口和所有种类的服务队列之间共享总共56K的存储器入口。在最糟的情形下,所有端口都多点传送64字节的多点传送分组到所有的其它端口,包括发送端口。这样,对每个1G的端口,由于(1Gbps/((64byte+12byte+8byte)×8bits/byte))等于1.4481M~1.5M,最大的入口数据分组率为1.4881兆分组每秒(Mpps),其中12个字节用于内部分组间隙,8个字节用作报头。这样,每个端口接收36.75Mbps~36.8Mbps。在有14个端口的设备中,总的带宽需求是36.75×14即514.4MHz。这个带宽需求比一般的156MHz的系统时钟快3倍。同样,设备将无法支持如此高的带宽要求。
发明内容
根据本发明的一个方面,提供了能够将存储空间动态分配给多个队列的网络设备,所述网络设备包括:
分配装置,用于为多个端口中的每一个分配预定数量的临时存储缓冲区和共享存储缓冲区,以及用来为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额,其中,在每个队列已经在临时存储缓冲区积累了预定部分的数据之后,这些数据就被送至共享存储器,以及
其中用于分配的装置将共享存储器访问带宽减小预订的数量,其中预定的数量小于系统时钟的处理带宽。
优选地,用于分配的装置被配置成为多个队列中的每一个配给4个字长的临时缓冲区,从而将共享存储器访问带宽减少四分之一。
优选地,所述网络设备被进一步配置为将4个字中的两个用于在数据写入共享存储器之前临时存储数据,4个字中的两个用于临时存储从共享存储器读取的数据。
优选地,对每个端口,临时缓冲区被配置成为每个队列在一个字内存储4个入口,其中每个队列被配置为在每次存储器访问时,向共享存储器写入一个字,以及在每次存储器读取时,从共享存储器读出一个字。
优选地,4个入口中的每一个都被配置为存储35比特数据。
优选地,每个端口的临时缓冲区配置成为多个队列中的每一个存储4个字,并且为多个队列中的每一个存储14位的指针。
优选地,用于分配的装置被配置成将共享存储器访问带宽减少至少四分之一共享存储器带宽需求。
根据本发明的一个方面,提供了一种将存储空间动态分配给多个队列的方法,所述方法包括以下步骤:
给多个端口中的每一个分配预定数量的临时存储缓冲区和共享存储缓冲区;
为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额;
在每个队列已经在临时存储缓冲区积累了预定部分的数据之后将数据传送至共享存储器;以及
将共享存储器访问带宽减小预订的数量,其中预定的数量小于系统时钟的处理带宽。
优选地,所述方法进一步包括为每个队列分配4个字长的临时缓冲区,从而将共享存储器访问带宽减少四分之一。
优选地,所述方法进一步包括分配两个缓冲器用于在数据写入共享存储器之前临时存储数据,以及两个缓冲器用于临时存储从共享存储器读出的数据。
优选地,所述方法进一步包括,每个队列在每次存储器访问时向共享存储器写入一个字以及在每次存储器读取时从共享存储器读出一个字。
优选地,所述方法进一步包括,在与每个队列相关的4个入口的每一个中均存储35比特数据。
优选地,所述方法进一步包括,对于每个端口,为多个队列中的每一个在临时缓冲区存储4个字,并且为多个队列中的每一个存储14位的指针。
根据本发明的一个方面,提供了一种将存储空间动态分配给多个队列的设备,所述设备包括:
分配装置,用于将预定数量的临时存储存储缓冲区和共享存储缓冲区分配给多个端口中的每一个;
配给装置,用于为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额;
传输装置,用于在每个队列已经在临时存储缓冲区积累了预定部分的数据之后将数据传送至共享存储器;以及
减小装置,用来将共享存储访问带宽减小预订的数量,其中预定的数量小于系统时钟的处理带宽。
附图说明
附图是为了提供对本发明进一步的理解,它合并在此并构成说明书的一部分,阐释了本发明的实施例,并与描述一起用来解释本发明的原理,其中:
图1是本发明实施例的网络设备示意图;
图2a是本发明共享存储器架构的示意图;
图2b是共享存储器架构的单元缓冲池;
图3是缓冲区管理机制示意图,存储管理单元用它来进行资源配额限定,从而保证对资源的公平访问;以及
图4是如何在网络设备所有端口之间动态共享一个XQ存储器204的示意图。
具体实施方式
本发明的优选实施例将结合附图加以说明。
图1示出了网络设备,如交换芯片,本发明的实施例可以在其中实施。设备100包括输入模块102、MMU 104和输出模块106。输入模块102用于对进入的分组执行交换功能。MMU 104的主要功能是按照可预知的方式有效的管理缓冲单元和分组指针资源,甚至是在严重拥塞的情况下。输出模块106用于执行分组修正及将分组传送到适当的目的端口。
设备100还可以包括一个内部的光纤高速端口,例如HiGig端口,108、一个或多个外部的以太网端口109a-109x、以及CPU端口110。高速端口108用来将系统中的各种网络设备互相连接起来,从而形成用来在外部资源端口与一个或多个外部目标端口之间传送分组的内部交换光纤。同样,高速端口108在包括多个互相连接的网络设备的系统外部是不可见的。CPU端口110用于与外部的交换/路由控制器件或CPU之间进行分组的发送和接收。根据本发明的实施例,CPU端口110可以被看作是外部以太网端口109a-109x中的一个。设备100和外部/片下CPU通过CPU处理模块111连接,如CMIC,所述CPU处理模块111与PCI总线相连,所述PCI总线将设备100连接到外部CPU上。
网络流量通过外部以太网端口109a-109x进出设备100。特别地,设备100中的流量从外部以太网源端口传送到一个或多个特定的目的以太网端口。在本发明的一个实施例中,设备100可以支持12个物理以太网端口109。在本发明的一个实施例中,设备100支持12个物理以太端口109和一个高速端口108,每个物理以太端口108可以以10/100/1000Mbps的速率运作,高速端口108可以以10Gbps或12Gbps的速率运作。
在本发明的实施例中,设备100设置在共享存储器结构周围,如图2a-2b所示,其中MMU 104使不同的端口之间可以共享分组缓冲区,同时为每个输入端口、输出端口以及与每个准入端口相关的各种服务队列提供资源保障。图2a示出了本发明的共享存储器结构。特别地,设备100的存储资源包括单元缓冲池(CBP,Cell Buffer Pool)存储器202和处理队列(XQ)存储器204。CBP存储器202为片下资源,它由4个DRAM芯片206a-206d组成。根据本发明的实施例,每个DRAM芯片的容量是288M比特,其中CBP存储器202的总容量为144M字节的原始存储数据。如图2b所示,CBP存储器202被划分为256K,即576字节的存储单元208a-208x,每个单元包括32字节的报头缓冲区210、多达512字节的分组数据212和32字节的保留空间214。这样,每个进入设备的分组消耗至少一个576字节的单元208。因此,对于一个包含64字节的帧的输入数据,输入分组将为它保留576字节的空间,尽管这576字节中只有64字节被该帧使用。
回到图2a,XQ存储器204包括指向CBP存储器202的分组指针216a-216x列表,其中不同的XQ指针216与每个端口相关。在输入端口、输出端口和各类服务的基础上记录CBP存储器202的单元计数器和XQ存储器204的分组计数器。这样,设备100可以在单元和分组的基础上提供资源保障。
一旦分组进入源端口109上的设备100,分组就被送到输入模块102进行处理。在处理过程中,每个输入端口和输出端口的分组共享系统资源202和204。图3示出了缓冲区管理机制,MMU用它来进行资源配额限定,从而保证对资源的公平访问。MMU104包括输入背压机制304、线端(head of line)机制306和加权随机早期检测机制308。输入背压机制304支持无损行为并在输入端口间公平地管理缓冲区资源。线端机制306支持对缓冲区资源的访问,同时优化系统吞吐量。加权随机早期检测机制308改善总的网络吞吐量。
输入背压机制304使用分组或单元计数器来记录在每个输入端口的基础上所使用的分组或单元的数量。输入背压机制304包括用于存储一组8个可单独配置阈值的寄存器和用于确定系统的每个准入端口使用8个阈值中的哪一个的寄存器。这组阈值包括极限阈值312、放弃极限阈值314和重置极限阈值316。如果与输入端口分组/单元的使用相关的计数器超过了放弃极限阈值314,则此输入端口的分组将会被放弃。在记录单元/分组数量的计数器基础上,使用暂停流量控制,来阻止流量到达占用缓冲区资源超过其公平共享份额的输入端口,从而停止超限输入端口的流量,防止由超限输入端口引起的拥塞。特别地,根据与一组阈值相关的输入背压计数器,每个输入端口对其是否处于输入背压状态保持记录。当输入端口处于输入背压状态时,从该输入端口周期性的发送定时器值为0xFFFF的流量暂停控制帧。当输入端口不再处于输入背压状态时,该输入端口发送定时器值为0x00的流暂停控制帧,允许数据流重新流动。如果输入端口目前并非处于输入背压状态,且分组计数器已经超过极限阈值312,该输入端口的状态变为输入背压状态。如果输入端口处于输入背压状态,且分组计数器降到重置极限阈值316以下,就使该端口脱离背压状态。
线端机制306用于支持对缓冲区资源的公平访问,同时优化系统的吞吐量。线端机制306根据分组放弃来管理缓冲区资源并改善总的系统吞吐量。根据本发明的实施例,线端机制306使用出口计数器和预定的阈值来记录每个输出端口和各类服务基础对缓冲区的使用情况,从而决定将任何新到达输入端口的分组丢弃,所述输入端口的目的地为超额使用资源的输出端口/各类服务队列。线端机制306支持不同的阈值,所述阈值取决于新达到的分组的颜色(color)。可根据输入模块中发生的测量和标记操作来对分组着色,MMU根据分组的颜色对这些分组执行不同的操作。
根据本发明的实施例,线端机制306是可配置的,并在每一类的服务队列和所有端口上独立运行,包括CPU端口。线端机制306使用计数器记录XQ存储器204和CBP存储器202的使用情况以及阈值,所述阈值是设计来支持CBP存储缓冲区202的静态分配和XQ存储缓冲区204的动态分配。CBP存储器202中的所有单元都定义了放弃阈值322,不考虑颜色标记。当与端口相关的单元计数器达到放弃阈值322时,该端口进入线端状态。之后,如果单元计数器降到小于重置极限阈值324时,该端口脱离线端状态。
对于XQ存储器204,XQ入口值330a-330h为每类服务队列定义XQ缓冲区的固定保障配额。XQ入口值330a-330h的每一个定义了应为相关队列保留的存储区入口的数量。例如,如果将XQ存储器的100字节分配给端口,与XQ入口330a-330d相关的前四类服务队列可分别被赋给10字节的值,而与XQ入口330d-330h相关的后四类服务队列可被赋给5字节的值。根据本发明的实施例,即使队列没有用尽根据相关的XQ入口值为其保留的缓冲区入口,线端机制306也不会将未使用的缓冲区分配给其它队列。然而,端口的XQ缓冲区的剩余40个未分配的字节将由与此端口相关的所有类别的服务队列共享。特定类别的服务队列可以占用的XQ缓冲区的共享缓冲池的极限数量与由XQ设定极限阈值332一起设定。这样,设定极限阈值332可以用来定义一个队列所能使用的缓冲区的最大数目,从而避免一个队列占用所有的可用XQ缓冲区。为了保证XQ入口值330a-330h之和不超过该端口可用缓冲区的总数,以及保证每类服务队列都能访问由入口值330为它定义的XQ缓冲区配额,用端口动态计数寄存器334记录每个端口的XQ缓冲区的可用缓冲池,其中,端口动态计数寄存器334保持记录该端口可用共享XQ缓冲区的数量。动态计数寄存器334的初始值与该端口相关的XQ缓冲区总数量减去XQ入口值320a-320h之和。当服务队列的类别超过由其XQ入口值330分配的配额之后、这类服务队列使用可用XQ缓冲区时,动态计数寄存器334开始减少。相反地,当类别超过由其XQ入口值330分配的配额之后、这类服务队列释放XQ缓冲区时,动态寄存器334增加。
当队列请求XQ缓冲区204时,线端机制306确定该队列使用的所有入口是否小于该队列的XQ入口值330,若所使用的入口数小于XQ入口值330,则准许缓冲区请求。但是,若所使用的入口数大于该队列的XQ入口值330,线端机制306确定请求的数量是否小于总的可用缓冲区或小于由相应的设置极限阈值332设定的最大值。设置极限阈值332本质上是与队列有关的放弃阈值,它与分组的颜色标记无关。这样,当与分组相关的分组计数达到设置极限阈值332时,队列/端口进入线端状态。当线端机制306检测到线端状况时,会发送更新状态,以使输入模块102可以将拥塞端口的分组放弃。然而,由于存在反应时间,当线端机制306发送状态更新时,在输入模块102和MMU104之间可能仍有分组在传输。在这种情况下,由于线端状态,可在MMU104发生分组放弃。在本发明的实施例中,由于输入模块102和MMU104之间的分组管线,XQ指针的动态缓冲池减小预定数量。这样一来,当可用XQ指针数等于或小于预定数量时,端口转成线端状态,MMU104向输入模块102发送更新状态,从而减少可能由MMU 104放弃的分组数量。为了脱离线端状态,队列的XQ分组数必须降到重置极限阈值336以下。
某一特定类别的服务队列的XQ计数器并没有达到设置极限阈值332,如果端口的XQ资源被其它服务类队列过度占用,所述特定类别的服务仍会将其分组放弃。在本发明的实施例中,对于包含特殊颜色标记的分组,定义了中间放弃阈值338和339,其中每个中间放弃阈值定义了何时一种特定颜色的分组应被放弃。例如,中间放弃阈值338可用于定义何时放弃黄色分组,中间放弃阈值339用于定义何时放弃红色分组。根据本发明的实施例,根据为其设定的优先级,分组被染色为绿色、黄色和红色中的一种。为保证与每种颜色的相关分组能按照每个队列的颜色分配比例进行处理,本发明的一个实施例设置了虚拟最大阈值340。虚拟最大阈值340等于未分配的可用缓冲区数量除队列数和当前使用的缓冲区数量之和。虚拟最大阈值340保证与每种颜色相关的分组按照相应的比例进行处理。这样,若可用的未分配缓冲区数量小于特定队列的设置极限阈值332且队列请求访问所有可用的未分配缓冲区时,线端机制306计算该队列的虚拟最大阈值340并处理一定比例的分组,所述分组与相对于所定义比率的每种颜色相关。
为节约寄存器空间,XQ阈值可用压缩的形式表示,其中每个单元表示一组XQ入口。组的大小取决于与特定的输出端口或服务队列种类有关的XQ缓冲区数量。
加权随机早期检测机制308是一种队列管理机制,它基于一种概率算法在XQ缓冲区204耗尽之前预先将分组放弃。因而加权随机早期检测机制308被用于优化总的网络吞吐量。加权随机早期检测机制308包括均衡统计量,所述均衡统计量用来记录队列长度并根据为该队列定义的放弃概图来放弃分组。放弃概图定义了特定平均队列大小情况下的放弃概率。根据本发明的实施例,加权随机早期检测机制308可以根据服务队列类别和分组定义单独的概图。
图4示出了在所有端口间动态共享一个XQ存储器的另一个实施例。如图4所示,给每类服务分配4个字的缓冲区402和404,两个缓冲区402a和402b用于在向XQ存储器204写入之前临时存储XQ数据,两个缓冲区404a和404b两个缓冲区用于在从XQ存储器读出数据之前进行临时存储。因此,当新的XQ入口到达端口的特定服务类,同时分组数据从XQ存储器204读出或写入时,将存在额外的空间用于存储输入的数据。类似地,在输出过程中,在端口消耗完存储在其它字中的所有XQ入口之前,一个字被用来存储预取字。这就保证了XQ出列操作不被干扰。在输入处理中,当每类服务累积到一个字或四个入口的XQ数据之后,数据被发送到XQ存储器204。
如临时缓冲区406所示,每个端口都能够在一个字410中为每类服务存储4个XQ入口。每个端口也能够在一次存储访问中将4个存储的XQ入口408写入XQ存储器204。在输出端,每个端口同样可以一次从XQ存储器读取4个XQ入口406。根据本发明的一个实施例,每个XQ入口408含有35比特的数据。因此,如412所示的每个端口的临时缓冲区大小为140比特/字乘以4字每类服务,再乘以每个端口8个服务类,或者140比特/字乘以32字/端口。通过在一个字410中存储4个XQ入口408,临时端口缓冲区412可以在每个入口中存储154比特,即4个字410,每个包括4个XQ入口408,加上14K字所需要的14位指针414。对一个有12个1G端口,一个高速端口和一个CPU的设备,这样有效地将存储器访问带宽需求减少了1/4。
在本发明的实施例中,所有端口和所有种类的服务队列之间共享含有56K入口的XQ存储器204,所有端口都多点传送64字节的多点传送分组到所有端口,包括发送端口。
这样,对每个1G的端口,最大的入口数据分组率为1.4881Mpps,或约等于1.5Mpps。同样地,每个端口接收36.75Mbps,即1.5×24.5。因此对于写入存取,总的带宽需求是36.75/4×14即128.7MHz,其中14是输出端口、CPU端口和高速端口的总数量。对于读取访问,带宽为9.2MHz或1.5/4×24.5,其中24.5表示端口总数。所以,XQ存储器204总的存储访问为128.7+9.2即137.9MHz,这个数值小于一般的156MHz系统时钟。
当队列请求XQ缓冲区204,且线端机制306检测到线端状况时,它就会发送更新状态以使输入模块102可以将拥塞的端口的分组放弃。然而,由于存在响应时间,在状态更新从线端机制306发送的同时,在输入模块102和MMU 104之间可能有分组在传输。在这种情况下,由于处于线端状态,分组放弃将发生在MMU 104处。
前面的描述是直接针对本发明的特定实施例的。但是,显然,在保留其部分或全部优点的情况下,可以对所述实施例进行变化和修改。因此,权利要求的目的是在本发明的核心思想和范围之内,覆盖所有这些变化和修改。
本申请要求申请号为60/676,287,提交日期为2005年5月2日的美国临时专利申请的优先权。前在申请的主题通过参考引用结合于此。
Claims (4)
1.一种将存储空间动态分配给多个队列的网络设备,其特征在于,所述网络设备包括:
分配装置,用于为多个端口中的每一个端口,分配预定数量的临时存储缓冲区和共享存储缓冲区,以及用来为与每个端口相关的多个队列中的每一个队列,配给相应的所述临时存储缓冲区的固定配额和相应的所述共享存储缓冲区的固定配额,其中,在每个队列已经在相应的临时存储缓冲区积累至所述固定配额大小的数据之后,这些数据在每次存储器访问时,发送至共享存储缓冲区,以及所有端口都多点传送64字节的多点传送分组到所有端口;
其中,所述分配装置被配置成为多个队列中的每一个配给4个字长的临时存储缓冲区,从而将共享存储缓冲区访问带宽减少四分之一;
对每个端口,临时存储缓冲区用于将每个队列分成并行读写数据的4个子队列通道,其中,每个队列一次读写的数据量为一个字,每个队列被配置为在每次存储器写入时,向共享存储缓冲区写入一个字,以及在每次存储器读出时,从共享存储缓冲区读出一个字;每个子队列通道用于存储35比特数据。
2.根据权利要求1所述的网络设备,其特征在于,所述网络设备被进一步配置为将4个字中的两个用于在将数据写入共享存储缓冲区之前临时存储数据,4个字中的两个用于临时存储从共享存储缓冲区读取的数据。
3.一种将存储空间动态分配给多个队列的方法,其特征在于,所述方法包括以下步骤:
给多个端口中的每一个端口,分配预定数量的临时存储缓冲区和共享存储缓冲区;
为与每个端口相关的多个队列中的每一个队列,配给相应的所述临时存储缓冲区的固定配额和相应的所述共享存储缓冲区的固定配额;
在每个队列已经在相应的临时存储缓冲区积累至所述固定配额大小的数据之后,在每次存储器访问时,将数据传送至共享存储缓冲区;以及所有端口都多点传送64字节的多点传送分组到所有端口;
为每个队列分配4个字长的临时存储缓冲区,从而将共享存储缓冲区访问带宽减少四分之一;
对每个端口,临时存储缓冲区用于将每个队列分成并行读写数据的4个子队列通道,其中,每个队列一次读写的数据量为一个字,每个队列被配置为在每次存储器写入时,向共享存储缓冲区写入一个字,以及在每次存储器读出时,从共享存储缓冲区读出一个字;每个子队列通道用于存储35比特数据。
4.根据权利要求3所述的方法,其特征在于,进一步包括分配4个字中的两个用于在数据写入共享存储缓冲区之前临时存储数据,以及4个字中的两个用于临时存储从共享存储缓冲区读出的数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US67628705P | 2005-05-02 | 2005-05-02 | |
US60/676,287 | 2005-05-02 | ||
US11/258,124 US7802028B2 (en) | 2005-05-02 | 2005-10-26 | Total dynamic sharing of a transaction queue |
US11/258,124 | 2005-10-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1881937A CN1881937A (zh) | 2006-12-20 |
CN1881937B true CN1881937B (zh) | 2011-01-19 |
Family
ID=35519821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100794016A Expired - Fee Related CN1881937B (zh) | 2005-05-02 | 2006-04-24 | 将存储空间动态分配给多个队列的方法及设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7802028B2 (zh) |
EP (1) | EP1720295B1 (zh) |
CN (1) | CN1881937B (zh) |
DE (1) | DE602005015553D1 (zh) |
TW (1) | TWI340572B (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070183416A1 (en) * | 2006-02-07 | 2007-08-09 | Mark Gooch | Per-port penalty queue system for re-prioritization of network traffic sent to a processor |
US7948976B2 (en) * | 2006-04-26 | 2011-05-24 | Marvell Israel (M.I.S.L) Ltd. | Efficient management of queueing resources for switches |
US20080025219A1 (en) * | 2006-07-27 | 2008-01-31 | Via Technologies, Inc. | Method for handling the bandwidth allocation of a networking device |
JP2009043030A (ja) | 2007-08-09 | 2009-02-26 | Hitachi Ltd | ストレージシステム |
US8130649B2 (en) * | 2007-10-18 | 2012-03-06 | Alcatel Lucent | Ingress traffic flow control in a data communications system |
WO2009107089A2 (en) * | 2008-02-26 | 2009-09-03 | Nxp B.V. | Apparatus and method for shared buffering between switch ports |
US8406133B2 (en) * | 2009-02-24 | 2013-03-26 | Silver Spring Networks, Inc. | System and method of regulating a packet rate to optimize traffic in a network |
US8271716B2 (en) * | 2010-02-01 | 2012-09-18 | Oracle America, Inc. | Virtualization of an input/output device for supporting multiple hosts and functions by using an ingress manager for accepting into a buffer communications identified by functions hosted by a single host |
US9112818B1 (en) * | 2010-02-05 | 2015-08-18 | Marvell Isreal (M.I.S.L) Ltd. | Enhanced tail dropping in a switch |
CN102347891A (zh) * | 2010-08-06 | 2012-02-08 | 高通创锐讯通讯科技(上海)有限公司 | 共享缓存的使用方法 |
US8514651B2 (en) * | 2010-11-22 | 2013-08-20 | Marvell World Trade Ltd. | Sharing access to a memory among clients |
CN103023816B (zh) * | 2011-09-20 | 2015-08-05 | 盛科网络(苏州)有限公司 | 实现网络入口资源控制的方法和装置 |
US8867360B2 (en) | 2012-03-22 | 2014-10-21 | Avaya Inc. | Method and apparatus for lossless behavior for multiple ports sharing a buffer pool |
US8904068B2 (en) * | 2012-05-09 | 2014-12-02 | Nvidia Corporation | Virtual memory structure for coprocessors having memory allocation limitations |
US9397961B1 (en) | 2012-09-21 | 2016-07-19 | Microsemi Storage Solutions (U.S.), Inc. | Method for remapping of allocated memory in queue based switching elements |
US9485326B1 (en) | 2013-04-01 | 2016-11-01 | Marvell Israel (M.I.S.L) Ltd. | Scalable multi-client scheduling |
US9306876B1 (en) | 2013-04-01 | 2016-04-05 | Marvell Israel (M.I.S.L) Ltd. | Multibank egress queuing system in a network device |
CN104426790B (zh) * | 2013-08-26 | 2019-02-26 | 中兴通讯股份有限公司 | 对多队列的缓存空间进行分配控制的方法及装置 |
US10057194B1 (en) | 2014-01-07 | 2018-08-21 | Marvell Israel (M.I.S.L) Ltd. | Methods and apparatus for memory resource management in a network device |
CN104156663B (zh) * | 2014-07-31 | 2018-01-02 | 上海华为技术有限公司 | 一种硬件虚拟端口及处理器系统 |
US10050896B2 (en) * | 2014-11-14 | 2018-08-14 | Cavium, Inc. | Management of an over-subscribed shared buffer |
CN105610729A (zh) * | 2014-11-19 | 2016-05-25 | 中兴通讯股份有限公司 | 一种缓存分配方法、装置及网络处理器 |
CN106330760A (zh) * | 2015-06-30 | 2017-01-11 | 深圳市中兴微电子技术有限公司 | 一种缓存管理的方法和装置 |
CN106330765B (zh) * | 2015-06-30 | 2019-11-05 | 南京中兴软件有限责任公司 | 缓存分配方法及装置 |
US10069748B2 (en) | 2015-12-14 | 2018-09-04 | Mellanox Technologies Tlv Ltd. | Congestion estimation for multi-priority traffic |
US10069701B2 (en) | 2016-01-13 | 2018-09-04 | Mellanox Technologies Tlv Ltd. | Flexible allocation of packet buffers |
US10250530B2 (en) | 2016-03-08 | 2019-04-02 | Mellanox Technologies Tlv Ltd. | Flexible buffer allocation in a network switch |
US10375074B2 (en) * | 2016-03-11 | 2019-08-06 | Postoak. Today Llc | Methods and apparatus for establishing shared memory spaces for data access and distribution |
US10084716B2 (en) | 2016-03-20 | 2018-09-25 | Mellanox Technologies Tlv Ltd. | Flexible application of congestion control measures |
US10205683B2 (en) | 2016-03-28 | 2019-02-12 | Mellanox Technologies Tlv Ltd. | Optimizing buffer allocation for network flow control |
US10387074B2 (en) * | 2016-05-23 | 2019-08-20 | Mellanox Technologies Tlv Ltd. | Efficient use of buffer space in a network switch |
US9985910B2 (en) | 2016-06-28 | 2018-05-29 | Mellanox Technologies Tlv Ltd. | Adaptive flow prioritization |
US10389646B2 (en) | 2017-02-15 | 2019-08-20 | Mellanox Technologies Tlv Ltd. | Evading congestion spreading for victim flows |
US10645033B2 (en) | 2017-03-27 | 2020-05-05 | Mellanox Technologies Tlv Ltd. | Buffer optimization in modular switches |
US10481816B2 (en) * | 2017-10-18 | 2019-11-19 | Western Digital Technologies, Inc. | Dynamically assigning data latches |
CN107835135B (zh) * | 2017-10-23 | 2020-08-21 | 深圳市楠菲微电子有限公司 | 共享缓冲区准入控制方法及装置 |
CN109871335A (zh) * | 2018-12-28 | 2019-06-11 | 努比亚技术有限公司 | 终端及其内存分配控制方法、计算机可读存储介质 |
CN111447154B (zh) * | 2019-01-17 | 2023-06-23 | 瑞昱半导体股份有限公司 | 设置在交换器内的电路以及管理交换器中的存储器的方法 |
US11005770B2 (en) | 2019-06-16 | 2021-05-11 | Mellanox Technologies Tlv Ltd. | Listing congestion notification packet generation by switch |
US10999221B2 (en) | 2019-07-02 | 2021-05-04 | Mellanox Technologies Tlv Ltd. | Transaction based scheduling |
US11470010B2 (en) | 2020-02-06 | 2022-10-11 | Mellanox Technologies, Ltd. | Head-of-queue blocking for multiple lossless queues |
US11954032B2 (en) * | 2022-01-24 | 2024-04-09 | Realtek Singapore Private Limited | Apparatus for managing buffers and method thereof |
US11973696B2 (en) | 2022-01-31 | 2024-04-30 | Mellanox Technologies, Ltd. | Allocation of shared reserve memory to queues in a network device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1217794A2 (en) * | 2000-12-19 | 2002-06-26 | Chiaro Networks Ltd. | System and method for router queue and congestion management |
US6788697B1 (en) * | 1999-12-06 | 2004-09-07 | Nortel Networks Limited | Buffer management scheme employing dynamic thresholds |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272257B1 (en) * | 1997-04-30 | 2001-08-07 | Canon Kabushiki Kaisha | Decoder of variable length codes |
US5896322A (en) * | 1997-10-23 | 1999-04-20 | S3 Incorporated | Multiple-port ring buffer |
US6590901B1 (en) * | 1998-04-01 | 2003-07-08 | Mosaid Technologies, Inc. | Method and apparatus for providing a packet buffer random access memory |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US6687247B1 (en) * | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
US6741559B1 (en) * | 1999-12-23 | 2004-05-25 | Nortel Networks Limited | Method and device for providing priority access to a shared access network |
US6778546B1 (en) * | 2000-02-14 | 2004-08-17 | Cisco Technology, Inc. | High-speed hardware implementation of MDRR algorithm over a large number of queues |
US6961342B1 (en) * | 2000-03-29 | 2005-11-01 | Necdet Uzun | Methods and apparatus for switching packets |
IL154851A0 (en) * | 2000-09-12 | 2003-10-31 | Ibm | System and method for controlling the multicast traffic of a data packet switch |
CA2355473A1 (en) | 2000-09-29 | 2002-03-29 | Linghsiao Wang | Buffer management for support of quality-of-service guarantees and data flow control in data switching |
DE60214341T2 (de) * | 2001-02-28 | 2007-09-13 | International Business Machines Corp. | Vermittlungsanordnung und -verfahren mit getrennten ausgangspuffern |
US7031331B2 (en) * | 2001-08-15 | 2006-04-18 | Riverstone Networks, Inc. | Method and system for managing packets in a shared memory buffer that serves multiple output links |
TW589822B (en) * | 2002-02-01 | 2004-06-01 | Admtek Inc | Ethernet switching architecture and dynamic memory allocation method for the same |
US20040001487A1 (en) * | 2002-06-28 | 2004-01-01 | Tucker S. Paul | Programmable InfiniBand switch |
US20040004972A1 (en) * | 2002-07-03 | 2004-01-08 | Sridhar Lakshmanamurthy | Method and apparatus for improving data transfer scheduling of a network processor |
US7349416B2 (en) * | 2002-11-26 | 2008-03-25 | Cisco Technology, Inc. | Apparatus and method for distributing buffer status information in a switching fabric |
EP2077648A1 (en) * | 2003-04-22 | 2009-07-08 | Agere Systems, Inc. | Method and apparatus for shared multi-bank memory |
US7529252B2 (en) * | 2003-06-27 | 2009-05-05 | Broadcom Corporation | Weighted queuing scheme for managing datagrams within a network device using single port double buffer (ping-pong) memory |
US7626985B2 (en) * | 2003-06-27 | 2009-12-01 | Broadcom Corporation | Datagram replication in internet protocol multicast switching in a network device |
US7697432B2 (en) * | 2003-06-27 | 2010-04-13 | Broadcom Corporation | Equal and weighted cost multipath load balancing in a network device |
US20050036502A1 (en) * | 2003-07-23 | 2005-02-17 | International Business Machines Corporation | System and method for handling multicast traffic in a shared buffer switch core collapsing ingress VOQ's |
US7606231B2 (en) * | 2005-02-18 | 2009-10-20 | Broadcom Corporation | Pipeline architecture for a network device |
-
2005
- 2005-10-26 US US11/258,124 patent/US7802028B2/en not_active Expired - Fee Related
- 2005-12-06 EP EP05026622A patent/EP1720295B1/en active Active
- 2005-12-06 DE DE602005015553T patent/DE602005015553D1/de active Active
-
2006
- 2006-04-24 CN CN2006100794016A patent/CN1881937B/zh not_active Expired - Fee Related
- 2006-04-28 TW TW095115334A patent/TWI340572B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6788697B1 (en) * | 1999-12-06 | 2004-09-07 | Nortel Networks Limited | Buffer management scheme employing dynamic thresholds |
EP1217794A2 (en) * | 2000-12-19 | 2002-06-26 | Chiaro Networks Ltd. | System and method for router queue and congestion management |
Non-Patent Citations (1)
Title |
---|
US 2004/0001487 A1,全文. |
Also Published As
Publication number | Publication date |
---|---|
DE602005015553D1 (de) | 2009-09-03 |
CN1881937A (zh) | 2006-12-20 |
EP1720295B1 (en) | 2009-07-22 |
EP1720295A1 (en) | 2006-11-08 |
US20060248242A1 (en) | 2006-11-02 |
TW200711390A (en) | 2007-03-16 |
TWI340572B (en) | 2011-04-11 |
US7802028B2 (en) | 2010-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1881937B (zh) | 将存储空间动态分配给多个队列的方法及设备 | |
US7948896B2 (en) | Weighted-fair-queuing relative bandwidth sharing | |
US7630306B2 (en) | Dynamic sharing of a transaction queue | |
CN102413063B (zh) | 动态调整出口资源分配阈值的方法及系统 | |
TWI487328B (zh) | 用於資料通信的方法和網路設備 | |
US7016367B1 (en) | Systems and methods for allocating bandwidth for processing of packets | |
CN101199168B (zh) | 监控通信链路的队列的方法、设备和系统 | |
US7474668B2 (en) | Flexible multilevel output traffic control | |
US7027457B1 (en) | Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches | |
US6922408B2 (en) | Packet communication buffering with dynamic flow control | |
US7742408B2 (en) | System and method for filtering packets in a switching environment | |
CN102420776B (zh) | 动态调整入口资源分配阈值的方法及系统 | |
US20070280104A1 (en) | System and Method for Managing Forwarding Database Resources in a Switching Environment | |
EP1489796B1 (en) | Fabric access node integrated circuit configured to bound cell reorder buffer depth | |
US7522622B2 (en) | Dynamic color threshold in a queue | |
US20070070895A1 (en) | Scaleable channel scheduler system and method | |
JP2014187421A (ja) | 通信装置及びパケットスケジューリング方法 | |
CN1989738A (zh) | 最低保证调度速率的传播 | |
US20080031269A1 (en) | System and Method for Bypassing an Output Queue Structure of a Switch | |
US20160094450A1 (en) | Reducing internal fabric congestion in leaf-spine switch fabric | |
US7272149B2 (en) | Bandwidth allocation systems and methods | |
CN101356777A (zh) | 在交换结构网络中管理芯片上队列 | |
JP4408376B2 (ja) | 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理 | |
EP2754050B1 (en) | A method and apparatus for storing data | |
CN100450103C (zh) | 流量整形的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110119 Termination date: 20170424 |