CN1826768A - 利用动态资源分配进行的大规模排队的可扩展方法 - Google Patents
利用动态资源分配进行的大规模排队的可扩展方法 Download PDFInfo
- Publication number
- CN1826768A CN1826768A CNA2004800207779A CN200480020777A CN1826768A CN 1826768 A CN1826768 A CN 1826768A CN A2004800207779 A CNA2004800207779 A CN A2004800207779A CN 200480020777 A CN200480020777 A CN 200480020777A CN 1826768 A CN1826768 A CN 1826768A
- Authority
- CN
- China
- Prior art keywords
- formation
- classification
- network equipment
- grouping
- queue
- 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
Links
- 238000013468 resource allocation Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 43
- 239000000835 fiber Substances 0.000 claims abstract description 5
- 230000015572 biosynthetic process Effects 0.000 claims description 113
- 230000015654 memory Effects 0.000 claims description 51
- 238000003860 storage Methods 0.000 claims description 16
- 239000000872 buffer Substances 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 abstract description 4
- 238000012217 deletion Methods 0.000 abstract description 2
- 230000037430 deletion Effects 0.000 abstract description 2
- 238000005755 formation reaction Methods 0.000 description 81
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- 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/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- 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
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3045—Virtual queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了用于高效分配和删除虚拟输出队列的方法和设备。根据某些实现方式,进入分组根据该分组(或分组的分类信息)将要根据例如“Q”值被存储在其中的队列而被分类。例如,Q值可以是被定义为{出口端口号||优先级号||入口端口号}的Q号。对于每个分类只分配单个物理队列。当物理队列为空时,物理队列优选地被回收,并被加到可用物理队列的“自由列表”中。因此,被分配物理队列的总数优选地不超过被分类的分组的总数。由于光纤信道(“FC”)和其他协议的输入缓冲需求对进入分组的数目给出了限制,所以本发明的动态分配方法导致物理队列的稀疏分配。
Description
技术领域
本发明一般地涉及网络管理,具体涉及控制网络设备中的流量流动。
背景技术
在数字通信系统中,数据通过网络在处理设备之间传输。在这种网络中,数据一般经由网络设备从一个计算机发送到另一个计算机,网络设备例如是由数据链路互连的集线器、路由器、网桥和/或交换机。
网络设备具有向数据链路发送数据、命令等(下文中称为“数据”)并从数据链路接收数据的端口。尽管本公开文件将主要涉及以分组形式发送的数据,但是本发明适用于任何可寻址的实体,包括但不限于数据报、信元等。因此,术语“分组”、“帧”、“信元”在这里被同义使用。
在单个网络设备内,分组在入口端口处被接受,传送过网络设备内的交换架构,并在出口端口处被接收,以传输到下一段数据链路上。如果每个输入端口维护单个先进先出(“FIFO”)缓冲器或“队列”,则可能出现各种问题。
图1图示了一个这样的问题,被称为线头(head of line,“HOL”)阻塞。在该HOL阻塞的示例中,多于一个入口端口在其队列头部有同时去往相同的出口端口的分组。入口端口105有单个队列106,其中进入分组被存储,直到它们被路由到合适的出口端口。类似地,入口端口110和115有相应的队列111和116。
假设端口125不在接受分组,而端口120和130是自由的。队列116有要去往端口130和端口120的分组,因此这些分组可以被顺序发送。然而,队列106和111在线头都有需要被路由到出口端口125的分组。队列106中的第二分组需要到出口端口120,队列111中的第二分组需要到出口端口130。即使端口120和130是自由的,但是队列106和111中的第二分组也会被阻塞,这是因为每个队列中的HOL分组无法发送。即使端口125正在接受外出分组,在发送其分组到端口125的队列106和111之间也会有争用。这种争用需要在下一个分组可被发送之前解决。
为了消除HOL阻塞,提出了虚拟输出队列(VOQ)。在VOQ实现方式中,入口端口有队列库,其中每个类别一个队列。类别例如可以包括源、目的地和优先级。分组被存储在与入口端口相关联的随机访问缓冲器中。然而,只有指向数据的指针需要被存储在各个VOQ中;载荷可以存储在其他地方(例如,在片外随机访问存储器中)。
在传统的VOQ实现方式中,必需的队列数目需要至少等于可能类别的总数。然而,随着类别数的增加,这种实现方式不再实用。例如,假设交换机有1024个端口,并且每个入口端口有包括源、目的地和优先级的类别的VOQ。如果每个分组可以有1024个目的地、1024个源和4个优先级级别中的任何一个,则为了路由交换机内的分组将需要超过4百万个队列。如果队列被实现为芯片上的物理存储器,则将需要超过4百万个物理存储器。
在考虑到近来开发的网络设备的高数据传输速率时,该问题恶化加剧了。如果交换机例如有1000个以2G/s传输分组的入口/出口端口,则有1000个2G/s数据流要管理。如果要管理的数据结构有超过4百万实体要以皮秒时间帧进行管理,则这对于在可预见的将来可用的硬件来说是不可能的管理问题。因此,希望获得在网络设备内交换分组的改进方法。
发明内容
提供了用于高效分配和删除虚拟输出队列的方法和设备。根据某些实现方式,进入分组根据该分组(或分组的分类信息)将要根据例如“Q”值被存储在其中的队列而被分类。例如,Q值可以是被定义为{出口端口号||优先级号||入口端口号}的Q号。对于每个分类只分配单个物理队列。当物理队列为空时,该物理队列优选地被回收,并被加到可用物理队列的“自由列表”中。因此,被分配物理队列的总数优选地不超过被分类分组的总数。
本发明的某些实现方式根据对具体入口端口可以接收的分组数目的限制,对被分配物理队列的数目作出了限制。由于光纤信道(“FC”)和其他协议的流控制机制(例如,输入缓冲需求)对进入分组的数目给出了限制,所以本发明的动态分配方法导致物理队列的稀疏分配。
根据本发明的某些实现方式,提供了一种在网络设备中分配队列的方法。该方法包括以下步骤:对进入分组进行分类;确定队列是否已被分配给分类;和在队列还未被分配给分类时分配队列。队列可以与网络设备的入口端口相关联。队列可以是虚拟输出队列。
该方法还可以包括检测何时队列为空和回收空队列的步骤。该方法还可以包括在队列被回收时更新存储器的步骤,其中存储器指示分类是否已被分配队列。网络设备可以包括指示可用于分配的队列的自由列表,其中该方法还包括在队列被回收时更新自由列表。
分类可以是基于分组源、分组目的地或分组优先级的。分类可以包括Q号。确定步骤可以包括寻址指示分类是否已被分配队列的存储器。
本发明的某些实施例提供了一种网络设备,其包括:用于对进入分组进行分类的分类器;用于确定队列是否已被分配给分类的确定器;和用于在队列还未被分配给分类时分配队列的分配器。队列可以与网络设备的入口端口相关联。队列可以是虚拟输出队列。
该网络设备还可以包括用于检测何时队列为空的检测器和用于回收空队列的回收器。
分类可以是基于分组源、分组目的地或分组优先级的。分类可以包括Q号。
在某些实施例中,确定器寻址指示分类是否已被分配队列的存储器。网络设备还可以包括用于在队列被回收时更新存储器的工具,其中存储器指示分类是否已被分配队列。网络设备可以包括指示可用于分配的队列的自由列表以及用于在队列被回收时更新自由列表的工具。
本发明的其他实现方式提供了一种实现在机器可读介质中的计算机程序。该计算机程序被配置来控制网络设备执行以下步骤:对进入分组进行分类;确定队列是否已被分配给分类;和在队列还未被分配给分类时分配队列。
本发明的其他实施例提供了一种网络设备。该网络设备包括以下组件:被配置来接收进入分组的多个端口;用于对进入分组进行分类的分类引擎;指示队列是否已被分配给分类的存储器;和用于在存储器指示队列还未被分配给分类时分配队列的处理器。存储器可以例如是内容可寻址存储器或随机访问存储器。
本发明的其他方面提供了一种在网络设备中分配队列的方法。该方法包括以下步骤:在第一时刻没有分配队列;接收第一分组;对第一分组进行第一分类;将第一队列分配给第一分类;接收第二分组;对第二分组进行第二分类;和确定第一分类是否与第二分类相同。
该方法还可以包括在第一分类不同于第二分类时分配第二队列的步骤。该方法还可以包括在第一分类不同于第二分类时将第二分组分派给第一队列的步骤。
本发明的其他方面提供了一种在网络设备中分配队列的方法。该方法包括以下步骤:确定网络设备的入口端口可以接收的分组的第一数目;和给入口端口分配第二数目的物理队列,其中第二数目小于或等于第一数目。根据本发明的某些这样的方面,网络设备根据光纤信道协议进行操作,并且确定步骤是基于入口端口保证的缓冲器到缓冲器限额的数目进行的。
该方法还可以包括以下步骤:识别到达入口端口的每个分组的类别;将类别相关到现有的物理队列;和在物理队列中存储分组信息。分组信息可以是控制信息,如目的地信息、源信息、优先级信息、载荷类型信息和/或载荷大小信息。该方法可以包括这些附加步骤:识别到达入口端口的每个分组的类别;和将类别分派给物理队列,其中网络设备只有在对该类别没有现有物理队列时才分配新的物理队列。
本发明的这些和其他的特征将在下面参考附图进行描述。
附图说明
图1的框图图示了线头阻塞问题。
图2是网络设备的框图。
图3图示了片上VOQ的一种实现方式的一部分。
图4的流程图概述了本发明的某些方面。
图5的流程图概述了本发明的其他方面。
图6的框图图示了用于执行本发明某些方面的网络设备的示例性组件。
图7的框图图示了用于执行本发明某些方面的网络设备的示例性组件。
具体实施方式
图2图示了到达设备200的一连串分组,在该示例中设备200是网络设备。在分组到达端口201后,它们被分类引擎220分类,分类引擎220可以以软件、硬件或固件实现。例如,每个分组可以根据控制信息,如其目的地、其源、其优先级、载荷类型等被归类。
在分类步骤后,每个分组的控制信息被分派给数组240中不同的一个队列。数组240中的每个队列可以例如是微处理器(如ASIC)的先进先出(“FIFO”)缓冲器。在该示例中,分组205的控制信息206存储在队列255的头部。分组215的控制信息216也存储在队列255中。分组210的控制信息211存储在队列250的头部。
然而,可能需要明显更多的存储器的其他分组信息(如载荷)可以存储在数据存储器230中。数据存储器230例如可以驻留在芯片外存储器(如SRAM、DRAM等)中。指向存储器230中存储的分组信息的指针存储在数组240中或与数组240相关联的存储器中。下面参考图3描述这样一种实现方式。这样,减少了对数组240中缓冲器的存储需求。
在VOQ内,分组通常以到达顺序接受服务。在VOQ之间,分组的流动由“仲裁器”控制,仲裁器使用一种或多种仲裁算法来调度入口端口和出口端口之间的分组。这种仲裁是必要的,例如用来匹配可用的目的地(即,可以接受分组的目的地)与请求源(包含至少一个分组的队列)。仲裁算法将从匹配实体内选择(例如,以轮询或加权优先级方式),以确定接下来服务哪一个分组。
因此,在分类步骤之后是仲裁步骤,其中仲裁器277确定每个队列的内容将发生什么变化。仲裁器277可以根据本领域技术人员已知的任何适用的仲裁算法来进行操作。仲裁器277可以以软件、硬件或固件实现。
图3图示了用于维护队列数组(如图2的数组240)的片上VOQ的一种实现方式的一部分。根据某些实现方式,在队列255中,控制信息的每一项具有关联的描述符字段和指示下一控制信息的位置的“下一指针”。描述符字段既包括进行分类所基于的控制信息,又包括关联的数据分组的载荷的位置。
然而,在其他实现方式中,进行分类所基于的控制信息被“Q”存储器上的位置所隐含,如下所述。通常,关联载荷的位置也可以被“P”存储器(如存储器255)所推断。因此,在这种实现方式中,只有下一个指针是必需的信息。
队列255中的第一描述符是用于控制信息206的。因此,该描述符将包括相关的控制信息(如源、目的地或优先级)和分组205的载荷在数据存储器230(见图2)内的位置。在该示例中,数据存储器230是片外随机访问存储器,如SRAM或DRAM。关联的下一个指针指示控制信息216(队列255中的下一个控制信息)的位置。与控制信息216相关联的“下一个指针”字段是空值,这是因为此时控制信息216是队列255中的控制信息的最后一项。
存储器300包括头部指针字段305和尾部指针字段310。每个头部指针指示在队列头部的控制信息的位置,每个尾部指针指示在相同队列尾部的控制信息的位置。在该示例中,头部指针315指向队列255内控制信息206的位置,尾部指针指向控制信息216的位置。存储器300有深度Q,Q是所有可能分类的数目。存储器300的总大小是Q*([HPTR字段305的大小]+[TPTR字段310的大小])。
缓冲器255的大小P取决于输入缓冲的限制和希望在系统中存储的分组的相应数目。例如,在光纤信道(“FC”)系统中,希望存储的每个源的分组数目等于链路提供的缓冲器到缓冲器限额(credit)的数目。在FC协议中,必须向对应于该限额数目的多个分组提供存储。因此,需要存储在数组240中的分组的总数目就是链路的总数目乘上每个链路的限额数目所得的值。一般来说,在FC交换机的输入缓冲器中可以存储每链路16个分组,但是在某些当前的实现方式中,可以存储每链路256个分组。如本领域技术人员所知的,类似的输入缓冲限制适用于其他协议和其他类型的网络设备。
图4的流程图提供了根据本发明某些实现方式的队列的动态、稀疏分配的高级概图。步骤405代表在没有分组到达网络设备的入口端口时的初始时刻(t=0)。因此,根据本发明的某些优选实现方式,还未分配物理队列。第一分组到达(步骤410),并且分组被分类(步骤415)。分组可以根据任何适当的标准,如源、目的地和/或优先级被分类。分类可以例如通过对第一分组的字段应用散列函数来执行。
物理队列在步骤420被分配,并且第一分组被分派给第一队列(步骤425)。物理队列可以例如是以上参考图2和3所述类型的队列。在优选实现方式中,将第一分组“分派”给第一队列包括在第一自由队列中存储第一分组的分类信息和指针信息。在可替换实现方式中,将第一分组分派给第一队列包括在第一队列中存储第一分组。
在步骤430,下一个分组到达端口。分组在步骤432被分类。然后,确定是否存在用于新分组的分类的现有队列(步骤435)。该确定可以以任何适当的方式进行,例如通过参考在随机访问存储器中存储并更新的每队列空位来进行。确定步骤的一种优选实现方式将在下面参考图6描述。
如果对于新分组的分类已经分配了物理队列,则分组被分派到现有的物理队列。然而,如果对于新分组的分类还未分配物理队列,则在步骤445物理分组被分配,并且在步骤450分组被分派到新的物理队列。然后,下一个分组到达并被分类,依此类推。
图4和前述内容假设第二分组(和后续分组)在第一分组仍然在队列中的同时到达。如果在下一个分组到达之前第一分组应当离开,则第一队列将被回收。第二分组将重复应用初始分组的所有步骤。根据上述实现方式,第二分组将被分配到与分配给第一分组不同的虚拟队列中。然而,在可替换实现方式中,第二分组可以被分配到与分配给第一分组相同的虚拟队列中。
优选地,物理队列在为空并且可用于新分类时也被动态回收。图5的流程图表示了该处理的概图。在步骤505,选中被分配的物理队列,并且确定其是否为空(步骤510)。在某些实现方式中,步骤505和510在单个操作中执行。如果没有空队列,则在随后某个时间再次评估队列。例如,可以在下一个时钟周期期间,在经过预定数目的时钟周期后等等再次评估队列。
在每次传输传输分组队列上传输的分组后,就发生队列检查。当分组被传输时,队列状态(空)被更新并被检查。因此,队列分配和回收是事件驱动的。
如果一个或多个队列被确定为空,则在步骤515队列被回收,并且可用于新的分类(步骤520)。优选地,与回收队列相关联的所有存储器在此时被更新,以指示回收队列不再与老的分类相关联。
图6的框图图示了以上参考图4和5所述方法的一种优选实现方式。这里,队列选择是通过将分组分类为值Q来进行的。分类机制例如可以通过散列分组字段、通过查找表等等来进行。所得到的Q值(这里是一个数)指示将存储分组的控制信息的队列。
将Q号与以硬件实现的物理队列P的存储器620的内容相比较,从而使有足够的状态存储介质以允许对系统可存储的每一个分组都有单独的队列。存储器620优选地是内容可寻址存储器(“CAM”),但是也可以是任何其他合适的存储器,如SRAM。在图6所示的实现方式中,存储器620是具有Q号字段625和有效位字段630的CAM。并且CAM的每行包括队列号和关于队列是否已被分派的指示。使用CAM作为存储器620的一个优点是其整个内容可以在一个周期内搜索到。
如果存储器620是SRAM,则Q号可以被输入到SRAM的地址线。从存储器620输出的数据可以是P值和“命中”指示。
通过寻址存储器620,确定出进入分组的Q号是否有分配的物理队列P。例如,如果存储器620是CAM,则存储器620寻找进入分组的Q号和字段625中的Q号之间的匹配,并确定字段625中的Q号在字段630中是否有有效位。如果是的话,则存在“命中”,并且该物理队列可以被提供给对应于命中数的控制信息。如果否的话,则不命中检测器635从“自由队列”的自由列表640中取得队列,自由队列是芯片上的自由资源。
自由列表640可以例如是最初具有等于其内容的地址的RAM。在一个示例中,当第一分组到达时(t=0),没有已分配的队列。因此,在t=0时,自由列表640将列出所有的队列,Q0、Q1等,直到QP。当第一分组到达时,存在不命中,并且第一分组将被分派以从自由列表640中取得的Q0。然后,存储器620将被告知该分配,并且将对应于Q0的字段630中的位更新为有效位。
在分组被分派到队列后,VOQ系统650以本领域技术人员所知的与传统VOQ系统类似的方式使用分组和队列。然而,在本发明的VOQ系统和现有技术的VOQ系统之间存在区别。例如,VOQ系统650只需要处理P数据结构,P是比用于相同网络设备传统VOQ系统使用的队列数少得多的队列数。
另一个与现有技术VOQ系统的差别涉及空检测器660的使用,空检测器660监视VOQ系统650并确定何时队列为空。然后,空检测器660向自由列表640返回相应的Q号,并通知存储器620,存储器620将字段630中的相应值变为无效位。
现在参考图7,适合于实现本发明的技术的网络设备760包括主中央处理单元(CPU)762、接口768和总线767(如PCI总线)。当在合适的软件或固件的控制下动作时,CPU 762可负责实现与所期望网络设备的功能相关联的特定功能。例如,当被配置为中间路由器时,CPU 762可负责分析分组、封装分组、并转发分组以传输到机顶盒。CPU 762优选地在软件控制下实现所有这些功能,软件包括操作系统(如Windows NT)和任何合适的应用软件。
CPU 762可以包括一个或多个处理器763,例如来自Motorola微处理器家族或MIPS微处理器家族的处理器。在可替换实施例中,处理器763是特殊设计的硬件,用于控制网络设备760的操作。在特定实施例中,存储器761(如非易失性RAM和/或ROM)也形成CPU 762的一部分。然而,存储器可以以许多不同的方式耦合到系统。存储器块761可用于各种目的,例如缓存和/或存储数据、编程指令等。
接口768一般提供为接口卡(有时称为“线路卡”)。通常,其控制通过网络发送和接收数据分组,有时还支持与网络设备760一同使用的其他外设。可提供的接口有以太网接口、帧中继接口、线缆接口、DSL接口、令牌环接口等等。另外,可以提供各种甚高速接口,如快速以太网接口、吉比特以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、ASI接口、DHEI接口等等。通常,这些接口可以包括适合于与合适媒体通信的端口。在某些情况下,其也可以包括独立处理器,有时还可以包括易失性RAM。独立处理器可以控制诸如分组交换、媒体控制和管理之类的通信密集型任务。通过提供分离处理器用于通信密集型任务,这些接口允许主微处理器762高效地执行路由计算、网络诊断、安全功能等任务。
尽管图7所示的系统图示了本发明的一个特定网络设备,但是这并不是可在其上实现本发明的唯一网络设备体系结构。例如,经常使用具有单个处理器的体系结构来处理通信以及路由计算等。另外,其他类型的接口和媒体也可以与网络设备一同使用。
不考虑网络设备的配置,其可以采用一个或多个存储器或存储器模块(例如存储器块765),这些存储器或存储器模块被配置用来存储用于通用网络操作的程序指令和数据、以及/或者与上述技术的功能有关的其他信息。程序指令例如可以控制操作系统和/或一个或多个应用程序的操作。
由于可以采用这种信息和程序指令来实现这里所述的系统/方法,因此本发明涉及机器可读介质,其包括用于执行这里所述的各种操作的程序指令、状态信息等。机器可读介质的示例包括但不限于诸如硬盘、软盘和磁带之类的磁介质;诸如CD-ROM盘之类的光介质;磁光介质;和被特殊配置来存储并执行程序指令的硬件设备,如只读存储器设备(ROM)和随机访问存储器(RAM)。本发明也可以实现在在合适介质上传播的载波中,如电波、光线、电线等。程序指令的示例既包括诸如由编译器产生的机器码,又包括包含较高级代码的文件,这种较高级代码可由计算机利用解释器执行。
尽管已经参考特定实施例图示并描述了本发明,但是本领域技术人员应当理解,可以在不脱离本发明精神或范围的前提下对所公开的实施例作出形式和细节上的改变。例如,应当意识到,上述功能的至少一部分可以由一个或多个设备(例如微处理器、微处理器集群等)执行。本发明优选地实现在FC交换机的入口端口处,但是也可以用在以太网交换机或其他网络设备中。
而且,本发明可以用在需要对具有大量类别数目的信息、对象等和可以在任何给定时刻归类的较少数目的单元排队的任何系统中。例如,本发明适用于对具有大量可能特性(如大小、形状、颜色或其他属性)的对象分类并且在任何给定时刻有较少数目的可能分类操作的分类机。例如,本发明可以实现在对具有大量可能颜色(如1000种颜色)的对象分类并且在任何给定时刻只能对较少数目的对象(如10个目标)进行分类的机器中。考虑到这些和其他的变化,本发明的范围应当参考所附权利要求确定。
Claims (33)
1.一种在网络设备中分配队列的方法,所述方法包括:
对进入分组进行分类;
确定队列是否已被分配给所述分类;和
在所述队列还未被分配给所述分类时分配所述队列。
2.如权利要求1所述的方法,其中所述队列与所述网络设备的入口端口相关联。
3.如权利要求1所述的方法,其中所述队列是虚拟输出队列。
4.如权利要求1所述的方法,还包括:
检测何时队列为空;和
回收所述空队列。
5.如权利要求1所述的方法,其中所述队列与入口端口相关联。
6.如权利要求1所述的方法,其中所述分类是基于分组源、分组目的地或分组优先级的。
7.如权利要求1所述的方法,其中所述分类包括Q号。
8.如权利要求1所述的方法,其中所述确定步骤包括寻址指示所述分类是否已被分配队列的存储器。
9.如权利要求4所述的方法,还包括在队列被回收时更新存储器,其中所述存储器指示所述分类是否已被分配队列。
10.如权利要求4所述的方法,其中所述网络设备还包括指示可用于分配的队列的自由列表,并且所述方法还包括在队列被回收时更新所述自由列表。
11.一种网络设备,包括:
用于对进入分组进行分类的装置;
用于确定队列是否已被分配给所述分类的装置;和
用于在所述队列还未被分配给所述分类时分配所述队列的装置。
12.如权利要求11所述的网络设备,其中所述队列与所述网络设备的入口端口相关联。
13.如权利要求11所述的网络设备,其中所述队列是虚拟输出队列。
14.如权利要求11所述的网络设备,还包括:
用于检测何时队列为空的装置;和
用于回收所述空队列的装置。
15.如权利要求11所述的网络设备,其中所述队列与入口端口相关联。
16.如权利要求11所述的网络设备,其中所述分类是基于分组源、分组目的地或分组优先级的。
17.如权利要求11所述的网络设备,其中所述分类包括Q号。
18.如权利要求11所述的网络设备,其中所述确定装置包括用于寻址指示所述分类是否已被分配队列的存储器的装置。
19.如权利要求14所述的网络设备,还包括用于在队列被回收时更新存储器的装置,其中所述存储器指示所述分类是否已被分配队列。
20.如权利要求14所述的网络设备,其中所述网络设备还包括指示可用于分配的队列的自由列表。
21.如权利要求20所述的网络设备,还包括用于在队列被回收时更新所述自由列表的装置。
22.一种实现在机器可读介质中的计算机程序,所述计算机程序被配置来控制网络设备执行以下步骤:
对进入分组进行分类;
确定队列是否已被分配给所述分类;和
在所述队列还未被分配给所述分类时分配所述队列。
23.一种网络设备,包括:
被配置来接收进入分组的多个端口;
用于对进入分组进行分类的分类引擎;
指示队列是否已被分配给分类的存储器;和
用于在所述存储器指示队列还未被分配给所述分类时分配所述队列的处理器。
24.如权利要求23所述的网络设备,其中所述存储器是内容可寻址存储器。
25.如权利要求23所述的网络设备,其中所述存储器是随机访问存储器。
26.一种在网络设备中分配队列的方法,所述方法包括:
在第一时刻没有分配队列;
接收第一分组;
对所述第一分组进行第一分类;
将第一队列分配给所述第一分类;
接收第二分组;
对所述第二分组进行第二分类;和
确定所述第一分类是否与所述第二分类相同。
27.如权利要求26所述的方法,还包括在所述第一分类不同于所述第二分类时分配第二队列的步骤。
28.如权利要求26所述的方法,还包括在所述第一分类不同于所述第二分类时将所述第二分组分派给所述第一队列的步骤。
29.一种在网络设备中分配队列的方法,所述方法包括:
确定所述网络设备的入口端口可以接收的分组的第一数目;和
给所述入口端口分配第二数目的物理队列,其中所述第二数目小于或等于所述第一数目。
30.如权利要求29所述的方法,其中所述网络设备根据光纤信道协议进行操作,并且所述确定步骤是基于所述入口端口保证的缓冲器到缓冲器限额的数目进行的。
31.如权利要求29所述的方法,还包括:
识别到达所述入口端口的每个分组的类别;
将所述类别相关到现有的物理队列;和
在所述物理队列中存储分组信息。
32.如权利要求29所述的方法,还包括:
识别到达所述入口端口的每个分组的类别;和
将所述类别分派给物理队列,其中所述网络设备只有在没有用于所述类别的现有物理队列时才分配新的物理队列。
33.如权利要求31所述的方法,其中所述分组信息包括选自以下列表的控制信息,所述列表由目的地信息、源信息、优先级信息、载荷类型信息和载荷大小信息组成。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/648,624 | 2003-08-25 | ||
US10/648,624 US8199764B2 (en) | 2003-08-25 | 2003-08-25 | Scalable approach to large scale queuing through dynamic resource allocation |
US10/791,673 US20050190779A1 (en) | 2004-03-01 | 2004-03-01 | Scalable approach to large scale queuing through dynamic resource allocation |
US10/791,673 | 2004-03-01 | ||
PCT/US2004/025091 WO2005025153A1 (en) | 2003-08-25 | 2004-08-03 | A scalable approach to large scale queuing through dynamic resource allocation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1826768A true CN1826768A (zh) | 2006-08-30 |
CN1826768B CN1826768B (zh) | 2011-06-08 |
Family
ID=34216772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800207779A Expired - Lifetime CN1826768B (zh) | 2003-08-25 | 2004-08-03 | 利用动态资源分配进行的大规模排队的可扩展方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8199764B2 (zh) |
CN (1) | CN1826768B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010000191A1 (zh) * | 2008-06-30 | 2010-01-07 | 中兴通讯股份有限公司 | 一种分组调度方法和装置 |
WO2010020156A1 (zh) * | 2008-08-19 | 2010-02-25 | 中兴通讯股份有限公司 | 一种混合业务流的缓存处理方法、存储转发方法及装置 |
CN102487354A (zh) * | 2010-12-02 | 2012-06-06 | 中兴通讯股份有限公司 | 队列资源调配方法及装置 |
CN101542483B (zh) * | 2006-11-22 | 2012-08-29 | 国际商业机器公司 | 用于数据存储系统中的资源回收的装置和方法 |
CN102664803A (zh) * | 2012-04-23 | 2012-09-12 | 杭州华三通信技术有限公司 | 一种ef队列的实现方法和设备 |
CN104301185A (zh) * | 2014-11-06 | 2015-01-21 | 盛科网络(苏州)有限公司 | 报文发送速率检测方法及装置 |
CN104428752A (zh) * | 2012-06-21 | 2015-03-18 | 微软公司 | 将虚拟机流卸载至物理队列 |
CN115580586A (zh) * | 2022-11-25 | 2023-01-06 | 成都成电光信科技股份有限公司 | 一种基于片上系统的fc交换机输出队列的构建方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7043319B1 (en) * | 2003-09-30 | 2006-05-09 | National Semiconductor Corporation | System and method for visualizing the use of resources in a process system |
WO2006106445A1 (en) * | 2005-04-05 | 2006-10-12 | Nxp B.V. | Electronic device and method for input queuing |
US8379647B1 (en) * | 2007-10-23 | 2013-02-19 | Juniper Networks, Inc. | Sequencing packets from multiple threads |
US8670454B2 (en) * | 2009-03-26 | 2014-03-11 | Oracle America, Inc. | Dynamic assignment of data to switch-ingress buffers |
US9197552B1 (en) | 2012-10-15 | 2015-11-24 | Cisco Technology, Inc. | Indexed access to a forwarding table in a network device |
TWI549454B (zh) * | 2014-06-17 | 2016-09-11 | One - to - many message allocation method | |
US10931591B2 (en) * | 2019-05-13 | 2021-02-23 | Barefoot Networks, Inc. | Allocation of virtual queues of a network forwarding element |
US11683276B2 (en) | 2021-05-20 | 2023-06-20 | Cisco Technology, Inc. | Quasi-output queue behavior of a packet switching device achieved using virtual output queue ordering independently determined for each output queue |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313454A (en) * | 1992-04-01 | 1994-05-17 | Stratacom, Inc. | Congestion control for cell networks |
US5844980A (en) | 1993-03-03 | 1998-12-01 | Siemens Business Communication Systems, Inc. | Queue managing system and method |
US5696930A (en) * | 1996-02-09 | 1997-12-09 | Advanced Micro Devices, Inc. | CAM accelerated buffer management |
JPH104431A (ja) | 1996-06-17 | 1998-01-06 | Fujitsu Ltd | スケジューリング装置およびスケジューリング方法 |
US6714517B1 (en) | 1998-11-10 | 2004-03-30 | Extreme Networks | Method and apparatus for interconnection of packet switches with guaranteed bandwidth |
US6603772B1 (en) | 1999-03-31 | 2003-08-05 | Cisco Technology, Inc. | Multicast routing with multicast virtual output queues and shortest queue first allocation |
US6625121B1 (en) | 1999-04-28 | 2003-09-23 | Cisco Technology, Inc. | Dynamically delisting and relisting multicast destinations in a network switching node |
US7010611B1 (en) | 1999-12-21 | 2006-03-07 | Converged Access, Inc. | Bandwidth management system with multiple processing engines |
US6922408B2 (en) * | 2000-01-10 | 2005-07-26 | Mellanox Technologies Ltd. | Packet communication buffering with dynamic flow control |
US6961342B1 (en) * | 2000-03-29 | 2005-11-01 | Necdet Uzun | Methods and apparatus for switching packets |
US6804815B1 (en) * | 2000-09-18 | 2004-10-12 | Cisco Technology, Inc. | Sequence control mechanism for enabling out of order context processing |
JP2002164916A (ja) * | 2000-11-22 | 2002-06-07 | Fujitsu Ltd | 中継装置 |
DE60031284T2 (de) | 2000-12-14 | 2007-10-11 | Lucent Technologies Inc. | Ablauffolgesteuerung für Paketvermittlungen und passive optischen Netzwerke |
SE518720C2 (sv) * | 2001-02-07 | 2002-11-12 | Ericsson Telefon Ab L M | Anordning och förfarande relaterande till trafikstyrning |
EP1393194B1 (en) * | 2001-04-27 | 2012-09-26 | Cisco Technology, Inc. | Weighted fair queuing-based methods and apparatus for protecting against overload conditions on nodes of a distributed network |
US6959002B2 (en) * | 2001-05-01 | 2005-10-25 | Integrated Device Technology, Inc. | Traffic manager for network switch port |
US7225271B1 (en) | 2001-06-29 | 2007-05-29 | Cisco Technology, Inc. | System and method for recognizing application-specific flows and assigning them to queues |
US7724760B2 (en) * | 2001-07-05 | 2010-05-25 | Broadcom Corporation | Method and apparatus for bandwidth guarantee and overload protection in a network switch |
US7151744B2 (en) * | 2001-09-21 | 2006-12-19 | Slt Logic Llc | Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover |
US20030067874A1 (en) | 2001-10-10 | 2003-04-10 | See Michael B. | Central policy based traffic management |
US7154885B2 (en) * | 2001-12-31 | 2006-12-26 | Stmicroelectronics Ltd. | Apparatus for switching data in high-speed networks and method of operation |
US7085846B2 (en) * | 2001-12-31 | 2006-08-01 | Maxxan Systems, Incorporated | Buffer to buffer credit flow control for computer network |
US7046687B1 (en) * | 2002-01-16 | 2006-05-16 | Tau Networks | Configurable virtual output queues in a scalable switching system |
US7385982B2 (en) * | 2002-04-09 | 2008-06-10 | Next Generation Systems, Inc. | Systems and methods for providing quality of service (QoS) in an environment that does not normally support QoS features |
KR100429904B1 (ko) * | 2002-05-18 | 2004-05-03 | 한국전자통신연구원 | 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법 |
US7430169B2 (en) * | 2002-06-03 | 2008-09-30 | International Business Machines Corporation | Retro flow control for arriving traffic in computer networks |
US7474668B2 (en) * | 2002-06-04 | 2009-01-06 | Alcatel-Lucent Usa Inc. | Flexible multilevel output traffic control |
US7609693B2 (en) * | 2002-06-04 | 2009-10-27 | Alcatel-Lucent Usa Inc. | Multicast packet queuing |
JP3789395B2 (ja) * | 2002-06-07 | 2006-06-21 | 富士通株式会社 | パケット処理装置 |
US6728861B1 (en) * | 2002-10-16 | 2004-04-27 | Emulex Corporation | Queuing fibre channel receive frames |
US20040151197A1 (en) * | 2002-10-21 | 2004-08-05 | Hui Ronald Chi-Chun | Priority queue architecture for supporting per flow queuing and multiple ports |
US20080008202A1 (en) * | 2002-10-31 | 2008-01-10 | Terrell William C | Router with routing processors and methods for virtualization |
US7274701B2 (en) * | 2002-11-04 | 2007-09-25 | Tellabs Operations, Inc. | Cell based wrapped wave front arbiter (WWFA) with bandwidth reservation |
US20040151184A1 (en) * | 2002-12-13 | 2004-08-05 | Zarlink Semiconductor V.N. Inc. | Class-based rate control using multi-threshold leaky bucket |
US20040208197A1 (en) * | 2003-04-15 | 2004-10-21 | Swaminathan Viswanathan | Method and apparatus for network protocol bridging |
US20040264472A1 (en) * | 2003-06-27 | 2004-12-30 | Oliver Neal C. | Method and system for open-loop congestion control in a system fabric |
US20050089054A1 (en) * | 2003-08-11 | 2005-04-28 | Gene Ciancaglini | Methods and apparatus for provisioning connection oriented, quality of service capabilities and services |
US20050138238A1 (en) | 2003-12-22 | 2005-06-23 | James Tierney | Flow control interface |
-
2003
- 2003-08-25 US US10/648,624 patent/US8199764B2/en not_active Expired - Fee Related
-
2004
- 2004-08-03 CN CN2004800207779A patent/CN1826768B/zh not_active Expired - Lifetime
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101542483B (zh) * | 2006-11-22 | 2012-08-29 | 国际商业机器公司 | 用于数据存储系统中的资源回收的装置和方法 |
WO2010000191A1 (zh) * | 2008-06-30 | 2010-01-07 | 中兴通讯股份有限公司 | 一种分组调度方法和装置 |
US8693472B2 (en) | 2008-08-19 | 2014-04-08 | Zte Corporation | Buffer processing method, a store and forward method and apparatus of hybrid service traffic |
WO2010020156A1 (zh) * | 2008-08-19 | 2010-02-25 | 中兴通讯股份有限公司 | 一种混合业务流的缓存处理方法、存储转发方法及装置 |
CN101656659B (zh) * | 2008-08-19 | 2012-05-23 | 中兴通讯股份有限公司 | 一种混合业务流的缓存处理方法、存储转发方法及装置 |
CN102487354A (zh) * | 2010-12-02 | 2012-06-06 | 中兴通讯股份有限公司 | 队列资源调配方法及装置 |
WO2012071959A1 (zh) * | 2010-12-02 | 2012-06-07 | 中兴通讯股份有限公司 | 队列资源调配方法及装置 |
CN102664803A (zh) * | 2012-04-23 | 2012-09-12 | 杭州华三通信技术有限公司 | 一种ef队列的实现方法和设备 |
CN102664803B (zh) * | 2012-04-23 | 2015-04-15 | 杭州华三通信技术有限公司 | 一种ef队列的实现方法和设备 |
CN104428752A (zh) * | 2012-06-21 | 2015-03-18 | 微软公司 | 将虚拟机流卸载至物理队列 |
CN104428752B (zh) * | 2012-06-21 | 2018-06-26 | 微软技术许可有限责任公司 | 将虚拟机流卸载至物理队列 |
CN104301185A (zh) * | 2014-11-06 | 2015-01-21 | 盛科网络(苏州)有限公司 | 报文发送速率检测方法及装置 |
CN115580586A (zh) * | 2022-11-25 | 2023-01-06 | 成都成电光信科技股份有限公司 | 一种基于片上系统的fc交换机输出队列的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
US8199764B2 (en) | 2012-06-12 |
US20050047338A1 (en) | 2005-03-03 |
CN1826768B (zh) | 2011-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11765074B2 (en) | System and method for facilitating hybrid message matching in a network interface controller (NIC) | |
CN1826768A (zh) | 利用动态资源分配进行的大规模排队的可扩展方法 | |
CN1064500C (zh) | 临时存储数据包的方法和设备 | |
US6922408B2 (en) | Packet communication buffering with dynamic flow control | |
CN1097913C (zh) | Atm流量调节 | |
US5289470A (en) | Flexible scheme for buffer space allocation in networking devices | |
US7733890B1 (en) | Network interface card resource mapping to virtual network interface cards | |
CN1411211A (zh) | 以太网交换芯片输出队列管理调度方法和装置 | |
CN1798102A (zh) | 在交换结构网络中仲裁虚拟信道传输队列 | |
CN1627728A (zh) | 在计算机服务器中共享以太网适配器的方法和装置 | |
US7613132B2 (en) | Method and system for controlling virtual machine bandwidth | |
CN1543149A (zh) | 网络环境中的流控制 | |
CN1879368A (zh) | 利用有序的加锁机制来维护诸如分组之类的项目的次序 | |
US7760736B2 (en) | Method, system, and computer program product for ethernet virtualization using an elastic FIFO memory to facilitate flow of broadcast traffic to virtual hosts | |
US20050190779A1 (en) | Scalable approach to large scale queuing through dynamic resource allocation | |
CN101061690A (zh) | PCI Express总线中基于性能的分组排序 | |
US7020712B1 (en) | Reducing CPU overhead in the forwarding process in an inbound/outbound controller for a router | |
CN1643874A (zh) | 使用定额和差额值进行调度 | |
CN1618215A (zh) | 实时网络业务量准入与调度方法 | |
CN1192563C (zh) | 服务于多输出队列的调度方法、程序调度装置及数据交换节点 | |
US7424027B2 (en) | Head of line blockage avoidance system and method of operation thereof | |
US7751400B2 (en) | Method, system, and computer program product for ethernet virtualization using an elastic FIFO memory to facilitate flow of unknown traffic to virtual hosts | |
CN1248119A (zh) | 将上协议层匹配到高速串行总线的数据传送方法 | |
CN1679281A (zh) | 分组处理引擎 | |
CN1306772C (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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20110608 |