CN1881937A - 将存储空间动态分配给多个队列的方法及设备 - Google Patents

将存储空间动态分配给多个队列的方法及设备 Download PDF

Info

Publication number
CN1881937A
CN1881937A CNA2006100794016A CN200610079401A CN1881937A CN 1881937 A CN1881937 A CN 1881937A CN A2006100794016 A CNA2006100794016 A CN A2006100794016A CN 200610079401 A CN200610079401 A CN 200610079401A CN 1881937 A CN1881937 A CN 1881937A
Authority
CN
China
Prior art keywords
memory
port
data
buffer
shared
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.)
Granted
Application number
CNA2006100794016A
Other languages
English (en)
Other versions
CN1881937B (zh
Inventor
埃里克·安德森
闯伟彤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Broadcom Corp
Zyray Wireless Inc
Original Assignee
Zyray Wireless Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN1881937A publication Critical patent/CN1881937A/zh
Application granted granted Critical
Publication of CN1881937B publication Critical patent/CN1881937B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2408Traffic characterised by specific attributes, e.g. priority or QoS for supporting different services, e.g. a differentiated services [DiffServ] type of service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate 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)
  • Computer And Data Communications (AREA)
  • Multi Processors (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 (10)

1、一种将存储空间动态分配给多个队列的网络设备,其特征在于,所述网络设备包括:
分配装置,用于为多个端口中的每一个分配预定数量的临时存储缓冲区和共享存储缓冲区,以及用来为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额,其中,在每个队列已经在临时存储缓冲区积累了预定部分的数据之后,这些数据就被送至共享存储器,以及
其中用于分配的装置将共享存储器访问带宽减小预订的数量,其中所述预定的数量小于系统时钟的处理带宽。
2、根据权利要求1所述的网络设备,其特征在于,用于分配的装置被配置成为多个队列中的每一个配给4个字长的临时缓冲区,从而将共享存储器访问带宽减少四分之一。
3、根据权利要求2所述的网络设备,其特征在于,所述网络设备被进一步配置为将4个字中的两个用于在将数据写入共享存储器之前临时存储数据,4个字中的两个用于临时存储从共享存储器读取的数据。
4、根据权利要求1所述的网络设备,其特征在于,对每个端口,临时缓冲区被配置成为每个队列在一个字内存储4个入口,其中每个队列被配置为在每次存储器访问时,向共享存储器写入一个字,以及在每次存储器读取时,从共享存储器读出一个字。
5、根据权利要求1所述的网络设备,其特征在于,4个入口中的每一个都被配置为存储35比特数据。
6、一种将存储空间动态分配给多个队列的方法,其特征在于,所述方法包括以下步骤:
给多个端口中的每一个分配预定数量的临时存储缓冲区和共享存储缓冲区;
为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额;
在每个队列已经在临时存储缓冲区积累了预定部分的数据之后将数据传送至共享存储器;以及
将共享存储器访问带宽减小预订的数量,其中预定的数量小于系统时钟的处理带宽。
7、根据权利要求6所述的方法,其特征在于,进一步包括为每个队列分配4个字长的临时缓冲区,从而将共享存储器访问带宽减少四分之一。
8、根据权利要求6所述的方法,其特征在于,进一步包括分配两个缓冲器用于在数据写入共享存储器之前临时存储数据,以及两个缓冲器用于临时存储从共享存储器读出的数据。
9、根据权利要求6所述的方法,其特征在于,进一步包括,每个队列在每次存储器访问时向共享存储器写入一个字以及在每次存储器读取时从共享存储器读出一个字。
10、一种将存储空间动态分配给多个队列的设备,其特征在于,所述设备包括:
分配装置,用于将预定数量的临时存储存储缓冲区和共享存储缓冲区分配给多个端口中的每一个;
配给装置,用于为与每个端口相关的多个队列中的每一个配给临时存储缓冲区的固定配额和共享存储缓冲区的固定配额;
传输装置,用于在每个队列已经在临时存储缓冲区积累了预定部分的数据之后将数据传送至共享存储器;以及
减小装置,用来将共享存储访问带宽减小预订的数量,其中预定的数量小于系统时钟的处理带宽。
CN2006100794016A 2005-05-02 2006-04-24 将存储空间动态分配给多个队列的方法及设备 Expired - Fee Related CN1881937B (zh)

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 2005-10-26
US11/258,124 US7802028B2 (en) 2005-05-02 2005-10-26 Total dynamic sharing of a transaction queue

Publications (2)

Publication Number Publication Date
CN1881937A true CN1881937A (zh) 2006-12-20
CN1881937B 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)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028146B2 (en) 2007-08-09 2011-09-27 Hitachi, Ltd. Management of temporary and permanent areas in nonvolatile memories of a storage system
CN102347891A (zh) * 2010-08-06 2012-02-08 高通创锐讯通讯科技(上海)有限公司 共享缓存的使用方法
CN103023816A (zh) * 2011-09-20 2013-04-03 盛科网络(苏州)有限公司 实现网络入口资源控制的方法和装置
CN103534693A (zh) * 2010-11-22 2014-01-22 马维尔国际贸易有限公司 在客户端之间共享对存储器的访问
WO2014173356A1 (zh) * 2013-08-26 2014-10-30 中兴通讯股份有限公司 缓存空间分配控制方法、装置及计算机存储介质
WO2016015493A1 (zh) * 2014-07-31 2016-02-04 华为技术有限公司 一种硬件虚拟端口及处理器系统
CN105610729A (zh) * 2014-11-19 2016-05-25 中兴通讯股份有限公司 一种缓存分配方法、装置及网络处理器
WO2017000872A1 (zh) * 2015-06-30 2017-01-05 中兴通讯股份有限公司 缓存分配方法及装置
WO2017000657A1 (zh) * 2015-06-30 2017-01-05 深圳市中兴微电子技术有限公司 一种缓存管理的方法、装置和计算机存储介质
CN107835135A (zh) * 2017-10-23 2018-03-23 深圳市楠菲微电子有限公司 共享缓冲区准入控制方法及装置
CN109871335A (zh) * 2018-12-28 2019-06-11 努比亚技术有限公司 终端及其内存分配控制方法、计算机可读存储介质
CN111447154A (zh) * 2019-01-17 2020-07-24 瑞昱半导体股份有限公司 设置在交换器内的电路以及管理交换器中的存储器的方法

Families Citing this family (31)

* Cited by examiner, † Cited by third party
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
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
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
US9306876B1 (en) 2013-04-01 2016-04-05 Marvell Israel (M.I.S.L) Ltd. Multibank egress queuing system in a network device
US9485326B1 (en) 2013-04-01 2016-11-01 Marvell Israel (M.I.S.L) Ltd. Scalable multi-client scheduling
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
US10050896B2 (en) * 2014-11-14 2018-08-14 Cavium, Inc. Management of an over-subscribed shared buffer
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
WO2017156496A1 (en) * 2016-03-11 2017-09-14 Post Oak 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
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

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507898B1 (en) * 1997-04-30 2003-01-14 Canon Kabushiki Kaisha Reconfigurable data cache controller
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
US6788697B1 (en) * 1999-12-06 2004-09-07 Nortel Networks Limited Buffer management scheme employing dynamic thresholds
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
JP3846880B2 (ja) * 2000-09-12 2006-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・パケット・スイッチのマルチキャスト・トラフィックを制御するためのシステム及び方法
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
US7002980B1 (en) 2000-12-19 2006-02-21 Chiaro Networks, Ltd. System and method for router queue and congestion management
KR100588947B1 (ko) * 2001-02-28 2006-06-14 인터내셔널 비지네스 머신즈 코포레이션 스위칭 장치 및 스위칭 방법
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
KR101086592B1 (ko) * 2003-04-22 2011-11-23 에이저 시스템즈 인크 패킷 저장 방법, 버퍼 관리 방법, 손실 버퍼 검출 방법 및공유형 메모리
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
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
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

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364164B (zh) * 2007-08-09 2012-08-29 株式会社日立制作所 存储系统
US8327110B2 (en) 2007-08-09 2012-12-04 Hitachi, Ltd. Storage system including a virtual volume, a plurality of disk drives and a plurality of flash memory devices
US8788786B2 (en) 2007-08-09 2014-07-22 Hitachi, Ltd. Storage system creating cache and logical volume areas in flash memory
US8028146B2 (en) 2007-08-09 2011-09-27 Hitachi, Ltd. Management of temporary and permanent areas in nonvolatile memories of a storage system
CN102347891A (zh) * 2010-08-06 2012-02-08 高通创锐讯通讯科技(上海)有限公司 共享缓存的使用方法
CN103534693B (zh) * 2010-11-22 2016-08-24 马维尔国际贸易有限公司 在客户端之间共享对存储器的访问的方法和设备
CN103534693A (zh) * 2010-11-22 2014-01-22 马维尔国际贸易有限公司 在客户端之间共享对存储器的访问
CN103023816A (zh) * 2011-09-20 2013-04-03 盛科网络(苏州)有限公司 实现网络入口资源控制的方法和装置
CN103023816B (zh) * 2011-09-20 2015-08-05 盛科网络(苏州)有限公司 实现网络入口资源控制的方法和装置
WO2014173356A1 (zh) * 2013-08-26 2014-10-30 中兴通讯股份有限公司 缓存空间分配控制方法、装置及计算机存储介质
WO2016015493A1 (zh) * 2014-07-31 2016-02-04 华为技术有限公司 一种硬件虚拟端口及处理器系统
CN105610729A (zh) * 2014-11-19 2016-05-25 中兴通讯股份有限公司 一种缓存分配方法、装置及网络处理器
WO2017000872A1 (zh) * 2015-06-30 2017-01-05 中兴通讯股份有限公司 缓存分配方法及装置
WO2017000657A1 (zh) * 2015-06-30 2017-01-05 深圳市中兴微电子技术有限公司 一种缓存管理的方法、装置和计算机存储介质
CN106330765A (zh) * 2015-06-30 2017-01-11 中兴通讯股份有限公司 缓存分配方法及装置
CN106330760A (zh) * 2015-06-30 2017-01-11 深圳市中兴微电子技术有限公司 一种缓存管理的方法和装置
CN106330765B (zh) * 2015-06-30 2019-11-05 南京中兴软件有限责任公司 缓存分配方法及装置
CN107835135A (zh) * 2017-10-23 2018-03-23 深圳市楠菲微电子有限公司 共享缓冲区准入控制方法及装置
CN109871335A (zh) * 2018-12-28 2019-06-11 努比亚技术有限公司 终端及其内存分配控制方法、计算机可读存储介质
CN111447154A (zh) * 2019-01-17 2020-07-24 瑞昱半导体股份有限公司 设置在交换器内的电路以及管理交换器中的存储器的方法
CN111447154B (zh) * 2019-01-17 2023-06-23 瑞昱半导体股份有限公司 设置在交换器内的电路以及管理交换器中的存储器的方法

Also Published As

Publication number Publication date
DE602005015553D1 (de) 2009-09-03
US20060248242A1 (en) 2006-11-02
TWI340572B (en) 2011-04-11
US7802028B2 (en) 2010-09-21
CN1881937B (zh) 2011-01-19
EP1720295A1 (en) 2006-11-08
EP1720295B1 (en) 2009-07-22
TW200711390A (en) 2007-03-16

Similar Documents

Publication Publication Date Title
CN1881937B (zh) 将存储空间动态分配给多个队列的方法及设备
US6922408B2 (en) Packet communication buffering with dynamic flow control
US7948896B2 (en) Weighted-fair-queuing relative bandwidth sharing
US9225668B2 (en) Priority driven channel allocation for packet transferring
US7948976B2 (en) Efficient management of queueing resources for switches
US8085801B2 (en) Resource arbitration
US20070268903A1 (en) System and Method for Assigning Packets to Output Queues
US7742408B2 (en) System and method for filtering packets in a switching environment
US7630306B2 (en) Dynamic sharing of a transaction queue
US8312243B2 (en) Memory management in network processors
US7272149B2 (en) Bandwidth allocation systems and methods
US7522622B2 (en) Dynamic color threshold in a queue
WO2020134425A1 (zh) 一种数据处理方法、装置、设备及存储介质
US6463484B1 (en) Egress port scheduling using memory efficient request storage
WO2006104804A2 (en) Mechanism for managing access to resources in a heterogeneous data redirection device
CN1219385C (zh) 用于远程高速接口应用的流结构
US7277389B2 (en) Systems and methods for grouping of bandwidth allocations
JP4408376B2 (ja) 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理
JP4852138B2 (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
US20060187941A1 (en) Self-correcting memory system
RU2684581C2 (ru) Способ стохастической диспетчеризации очередей коммутатора и устройство, его реализующее
CN100486226C (zh) 一种网络设备以及在该网络设备中处理数据的方法
CN108243109A (zh) 拥塞位置确定方法及装置
CA2277250A1 (en) Egress port scheduling using memory efficient request storage
JPH11252142A (ja) データ伝送装置及び方法、並びにネットワークシステム

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

Granted publication date: 20110119

Termination date: 20170424

CF01 Termination of patent right due to non-payment of annual fee