网络设备中的分组缓冲溢出的制作方法


网络设备中的分组缓冲溢出
1.相关申请的交叉引用
2.本技术要求于2020年3月18日提交的发明名称为“modular spill over in a network switch”的美国临时专利申请第62/991,431号的利益,其公开内容在此明确地通过引用全部并入本文。
技术领域
3.本公开一般涉及通信网络,并且更具体地涉及网络设备中的缓冲分组。


背景技术:



4.诸如网络交换机、路由器、边缘设备等等之类的网络设备经常利用分组存储器来在网络设备的输出端口经历的拥堵时间期间、在分组正在由网络设备处理和/或等待传输的同时,对分组进行缓冲。通常,网络设备利用内部分组存储器(例如,与网络设备的分组处理器在同一芯片上实现的分组存储器)或外部分组存储器(例如,作为网络设备的分组处理器芯片外部的单独设备来实现的分组存储器)。内部分组存储器通常比外部分组存储器更小,但是内部分组存储器所具有的访问带宽通常比外部分组存储器更高。另一方面,外部分组存储器通常比内部分组存储器更大并且提供更多的存储容量,但是外部分组存储器的访问带宽通常比内部分组存储器更低。外部分组存储器的较低访问带宽没有足够的带宽来支持对目前许多网络设备所支持的全部带宽的缓冲。


技术实现要素:



5.在一个实施例中,一种用于在网络设备中处理分组的方法,包括:在网络设备的分组处理器处,接收经由该网络设备的多个网络端口之中的网络端口进入的分组;用分组处理器处理该分组,以至少确定该分组从该网络设备传输将经由的该多个网络端口之中的一个或多个网络端口;用分组处理器,在第一分组存储器中对分组进行缓冲;检测第一分组存储器中的队列中的拥堵;响应于检测到第一分组存储器中的拥堵,在相应的一个或多个转移中,动态地将相应的多个分组的一个或多个组从第一分组存储器转移到第二分组存储器,该第二分组存储器被配置为对由网络设备所支持的业务带宽的一部分进行缓冲;在将多个分组的一个组从第一分组存储器转移到第二分组存储器之后,并且在从网络设备传输多个分组的一个组之中的分组之前,用分组处理器请求将多个分组的一个组从第二分组存储器转移回到第一分组存储器;用分组处理器从第一分组存储器检索从第二分组存储器转移回到第一分组存储器的分组;以及用分组处理器,将从第一分组存储器检索的分组转发到被确定用于从网络设备传输分组的一个或多个网络端口。
6.在另一个实施例中,一种网络设备,包括:被配置为耦合到多个网络链路的多个网络端口以及耦合到多个网络端口的分组处理器。该分组处理器被配置为:处理经由网络设备的多个网络端口之中的网络端口接收的分组,以至少确定分组从网络设备传输将经由的多个网络端口之中的一个或多个网络端口;将分组缓冲在第一分组存储器中的队列中;检
测第一分组存储器中的队列中的拥堵;响应于检测到第一分组存储器中的拥堵,在相应的一个或多个转移中,动态地将相应的多个分组的一个或多个组从第一分组存储器转移到第二分组存储器,该第二分组存储器被配置为对由网络设备所支持的业务带宽的一部分进行缓冲;在将多个分组的一个组从第一分组存储器转移到第二分组存储器之后,并且在从网络设备传输多个分组的一个组之中的分组之前,请求将多个分组的一个组从第二分组存储器转移回到第一分组存储器;从第一分组存储器检索从第二分组存储器转移回到第一分组存储器的分组;以及将从第一分组存储器检索的分组转发到被确定用于从网络设备传输分组的一个或多个网络端口。
附图说明
7.图1是根据一个实施例的示例性网络设备的框图,该网络设备被配置为实现从第一分组存储器到一个或多个第二分组存储器的分组的溢出。
8.图2a-图2d是图示了根据一个实施例的用于将出口队列的一部分从第一分组存储器转移到第二分组存储器、以及将出口队列的一部分从第二分组存储器转移回到第一分组存储器的过程的图。
9.图3是图示了根据一个实施例的用于在被配置为实现从第一分组存储器到一个或多个第二分组存储器的分组的溢出的网络设备中处理分组的示例性方法的流程图。
具体实施方式
10.在下面描述的实施例中,一种网络设备被配置为利用第一分组存储器和至少一个第二分组存储器,以用于例如在网络设备的输出网络端口所经历的拥堵时间期间对在网络设备处接收到的分组进行缓冲,直到分组可以由网络设备传输。与至少一个第二分组存储器的访问带宽相比,第一分组存储器具有相对较高的访问带宽。例如,在一个实施例中,第一分组存储器具有足够高的访问带宽以支持由网络设备所支持的全部带宽的缓冲,而至少一个第二分组存储器没有足够高的带宽以支持由网络设备所支持的全部带宽的缓冲。另一方面,在一个实施例中,与至少一个第二分组存储器相比,具有足够高的访问带宽的第一分组存储器尺寸相对较小并且存储容量较低。
11.在一个实施例中,网络设备被配置为最初将分组存储在第一分组存储器中,并且根据网络设备处的拥堵状态,按照需要将分组转移到至少一个第二分组存储器。例如,在一个实施例中,网络设备被配置为:例如基于检测到第一分组存储器中的出口队列的长度超过阈值,而检测与网络设备的特定网络端口相对应的出口队列中的拥堵,并且响应于检测到出口队列中的拥堵,将特定出口队列中的一个或多个分组从第一分组存储器转移到第二分组存储器,从而允许出口队列从第一分组存储器“溢出”到第二分组存储器。在一个实施例中,第二分组存储器中的缓冲器比第一分组存储器中的缓冲器更大,并且网络设备被配置为:在相应的一个或多个转移中,将多个分组的一个或多个组从第一分组存储器转移到第二分组存储器,以便更有效地利用第二分组存储器中的较大缓冲器。在一个实施例中,从第一分组存储器转移到第二分组存储器的来自特定出口队列的分组被维持在第二分组存储器中的对应队列中,以保持分组在第一分组存储器中的存储顺序。随后,在一个实施例中,在从网络设备传输一个或多个分组之前,将一个或多个分组从第二分组存储器转移回
到第一分组存储器,并且在一个实施例中,与第一分组存储器中的出口队列重新链接,使得分组随后可以被调度(schedule)用于从第一分组存储器中的出口队列传输。然后,在一个实施例中,网络设备调度从第一分组存储器传输一个或多个分组。因为由网络设备处理的分组中只有一部分从第一分组存储器转移到第二分组存储器,所以在一个实施例中,第二较低带宽分组存储器只需要支持由网络设备所支持的带宽的一部分。此外,在一个实施例中,在每个出口队列的基础上,将分组从第一分组存储器转移到第二分组存储器,在第二分组存储器的对应队列中维持来自特定出口队列的分组的顺序,并在分组从第二分组存储器转移回到第一分组存储器时,将分组与对应的出口队列重新链接,这确保了分组从网络设备传输而没有改变分组被网络设备接收的顺序。
12.在一些实施例中,网络设备被配置为支持模块化缓冲架构,在该模块化缓冲架构中,由网络设备利用的第二低带宽分组存储器的数量取决于网络设备所需要或期望的缓冲容量,例如,该缓冲容量是由网络设备在网络内的位置来确定的。例如,在一个实施例中,在网络的边缘处的网络设备比被定位在网络的分布层中的网络设备需要更低的缓冲容量,并且被定位在网络的分布层中的网络设备比在网络的核心处的交换机需要更低的缓冲容量。因此,例如,在网络的核心处的网络设备被配置为利用两个第二分组存储器,并允许第一分组存储器中缓冲的业务按照需要溢出到两个第二分组存储器之上。另一方面,在各种实施例中,在网络的分布层处的网络设备被配置为仅利用单个第二分组存储器,并且在网络的边缘处的网络设备被配置为仅在第一分组存储器中按照需要对所有业务进行缓冲,而不使用任何第二分组存储器。因此,在至少一些实施例中,本公开的模块化缓冲架构允许将网络设备的相同核心芯片部署在被定位在网络内的不同位置处的网络设备中,由网络设备所利用的第二分组存储器的数量取决于网络设备在网络内的特定位置。
13.图1是根据一个实施例的示例性网络设备100的框图,网络设备100被配置为实现从第一分组存储器到一个或多个第二分组存储器的分组的溢出。网络设备100包括多个网络端口108,网络端口108被配置为耦合到相应的网络链路110,以用于将网络设备100耦合到网络中的其他设备。网络设备100还包括与网络端口108耦合的分组处理器112。分组处理器112被配置为处理经由网络端口108接收的分组,并确定一个或多个其他网络端口108,经由这些网络端口将分组转发给网络上的一个或多个其他设备。在一些实施例中,生成与分组相对应的数据单元,诸如与分组相对应的分组描述符(packet descriptor),并将分组描述符而不是分组本身提供给分组处理器112以处理该分组。在一个实施例中,分组描述符包括报头信息和与分组相关联的其他信息。在一个实施例中,分组处理器112被配置为在分组描述符的处理期间按照需要,对分组描述符中的信息进行更新。为了便于解释,术语“分组”在下文中被用来指代分组本身或指代与分组相关联的分组描述符。
14.在一个实施例中,分组处理器112包括存储器控制器120。存储器控制器120耦合到第一分组存储器124。此外,在一个实施例中,存储器控制器120耦合到一个或多个第二分组存储器128。在一个实施例中,第一分组存储器124被实现在与分组处理器112相同的芯片上。另一方面,在一个实施例中,一个或多个第二分组存储器128未被实现在与分组处理器112相同的芯片上。例如,在一个实施例中,一个或多个第二分组存储器128被实现为网络设备100外部的一个或多个分开的设备,或者被包括在网络设备100外部的一个或多个分开的设备中。在一个实施例中,一个或多个第二分组存储器128被实现为或被包括在一个或多个
存储器设备中,该一个或多个存储器设备经由相应的一个或多个网络端口108而耦合网络设备100。换句话说,在本实施例中,网络设备100的一个或多个网络端口108被用来提供网络设备100与一个或多个第二分组存储器128的耦合,而不是网络设备100与网络上的其他设备的耦合。在另一个实施例中,一个或多个第二分组存储器128中的至少一个第二分组存储器被实现为或被包括在经由网络端口108以外的接口而耦合网络设备100的存储器设备中。例如,至少一个第二分组存储器128被实现为或被包括在经由外围元件互连(pci)接口、高速pci(pcie)接口、双数据率(ddr)存储器接口、图形双数据率(gddr)存储器接口、闪存存储器接口、或任何其他适当类型的存储器接口而耦合网络设备100的存储器设备中。
15.在另一个实施例中,一个或多个第二分组存储器128中的至少一个第二分组存储器被实现在与分组处理器112不同的芯片上,但是一个或多个第二分组存储器128中的该至少一个第二分组存储器仍然在网络设备100的内部(例如,与网络设备100的其他组件被封装在一起)。例如,在一个实施例中,外部分组存储器128被提供以取代与网络端口108相对应的网络端口芯片、或者被提供以代替与端口108相对应的物理层(phy)芯片,与网络设备100的分组处理器112被封装在一起。
16.作为示例,第一分组存储器124有时在本文中被称为“内部分组存储器124”,并且一个或多个第二分组存储器128有时在本文中被称为“多个外部分组存储器128”或被统称为“外部分组存储器128”。然而,在一些实施例中,第一分组存储器124和一个或多个第二分组存储器128两者都是内部分组存储器或两者都是外部分组存储器。
17.在一个实施例中,内部分组存储器124使用静态随机存取存储器(sram)技术来实现,并且一个或多个外部分组存储器128中的每个外部分组存储器使用动态随机存取存储器(dram)技术来实现。在其他实施例中,内部分组存储器124和/或一个或多个外部分组存储器128使用其他合适的技术来实现。在一个实施例中,一个或多个外部分组存储器128被实现为双数据率(ddr)类型存储器。在其他实施例中,一个或多个外部分组存储器包括以下中的一者或多者的任何合适的组合:图形双数据速率(gddr)存储器、闪存存储器、和任何其他合适的类型的存储器。
18.在各种实施例中,内部分组存储器124与外部分组存储器128相比具有不同的访问带宽、成本、尺寸、存储容量和其他特性。例如,在一个实施例中,内部分组存储器124具有较高的访问带宽,并且能够以由网络设备100所支持的全线路速度来操作。相反,在一些实施例中,外部分组存储器128具有较低的访问带宽,并且不能够以由网络设备100所支持的全线路速度来操作。然而,至少在一些实施例中,内部分组存储器124比外部分组存储器128的成本更高。此外,例如,在一个实施例中,内部分组存储器124会占用适于添加附加处理电路的片上空间。因此,在一些实施例中,例如由于成本和尺寸的限制,内部分组存储器124的尺寸通常比外部分组存储器128更小,并且存储容量更低。仅作为一个示例,在一个实施例中,内部分组存储器124具有兆字节(mb)或更少的数量级的存储容量,而外部分组存储器128中的每个外部分组存储器具有千兆字节(gb)或更多的数量级的存储容量。
19.在一个实施例中,分组处理器112被配置为最初在内部分组存储器124中对经处理的分组进行排队,并且按照需要将分组转移到外部分组存储器128,从而允许分组溢出到第二分组存储器128中。例如,正如将在下文中详细解释的那样,分组处理器112被配置为将内部分组存储器124中的一个或多个拥堵的出口队列中的分组转移到外部分组存储器128。在
一个实施例中,外部分组存储器128中的缓冲器比内部分组存储器124中的缓冲器更大,并且分组处理器112被配置为:在相应的一个或多个转移中,将多个分组的一个或多个组从内部分组存储器124中转移到外部分组存储器128,以更有效地利用外部分组存储器128中的较大缓冲器。在一个实施例中,随后在传输从第一分组存储器124溢出到第二分组存储器128的分组之前,分组处理器112请求将分组转移回到内部分组存储器124。然后,分组处理器112将转移回到内部分组存储器124的分组与内部分组存储器124中的对应的出口队列链接起来。在一个实施例中,当被调度以用于传输时,然后从内部分组存储器124检索(retrieve)分组,并将该分组转发到适当的网络端口以用于网络设备100的传输。
20.在一个实施例中,从内部分组存储器124中的出口队列转移的分组或分组组被存储在外部分组存储器128中的对应队列中,以维持分组在内部分组存储器124中的存储顺序。在一个实施例中,分组处理器被配置为按照需要继续将分组或分组组从内部分组存储器124中拥堵的出口队列转移到外部分组存储器128,同时继续监测内部分组存储器124中的出口队列的拥堵。因此,在网络设备100中的出口队列的寿命期间,在内部分组存储器124和外部分组存储器128之间发生分组或分组组的多次转移,因为来自外部分组存储器128中的对应队列的头部的分组被转移回到内部分组存储器124,并且来自内部分组存储器124中的出口队列的附加分组被转移到外部存储器128并且被添加到外部分组存储器128中的对应队列的尾部。
21.在一个实施例中,分组处理器112被配置为仅将存储在内部分组存储器124中的分组的一部分转移到外部分组存储器128,而其他分组在整个时间内保留在内部分组存储器124中,直到分组处理器112从内部分组124检索分组,以用于经由被确定用于分组的传输的网络端口108来传输分组。例如,在一个实施例中,分组处理器112被配置为仅转移来自内部分组存储器124中的拥堵的出口队列的分组,而在非拥堵的出口队列中的分组保留在内部分组存储器124中,直到从分组存储器124检索分组,以用于经由被确定用于传输分组的网络端口108来传输分组。因此,在一个实施例中,只有来自拥堵的出口队列的分组溢出到外部分组存储器128,而非拥堵的出口队列完全保留在内部分组存储器124中。在至少一些实施例中,因为由网络设备100处理的分组中只有一部分从内部分组存储器124转移到外部分组存储器128,所以外部分组存储器128只需要支持由网络设备100所支持的带宽的一部分。此外,在至少一些实施例中,在每个出口队列的基础上,将分组从内部分组存储器124转移到外部分组存储器128,并且当分组从外部分组存储器128转移回到内部分组存储器124时,将分组与对应的出口队列重新链接,这确保了分组从网络设备100传输而没有改变分组被网络设备100接收的顺序。
22.在一些实施例中,网络设备100被配置为利用的外部分组存储器128的数量取决于网络设备100所需要或期望的缓冲能力,其中例如,缓冲能力取决于网络设备100在网络内的位置。例如,在一个实施例中,如果网络设备100被部署在网络的核心处,则网络设备100被配置为利用两个外部分组存储器128。在这种情况下,在各种实施例中,两个外部分组存储器经由两个相应的网络端口108而被耦合到网络设备100,或者作为网络设备100的分组处理器112的外部芯片而被提供。另一方面,在一个实施例中,如果网络设备100被部署在网络的分布层处,则网络设备100被配置为仅利用单个外部分组存储器128。例如,在这种情况下,在一个实施例中,网络设备100的仅仅单个网络端口108被用于将网络设备100耦合到外
部分组存储器128,或者网络设备100内的仅仅单个芯片实现外部分组存储器128。作为又一个示例,如果网络设备100被部署作为在网络的边缘处的边缘设备,则网络设备100被配置为仅在内部分组存储器124中按照需要对所有分组进行缓冲。在这种情况下,外部分组存储器1288不需要被耦合到网络设备100,也不需要以其他方式被提供用于网络设备100。因此,在各种实施例中,利用网络设备100的同一核心芯片(例如,同一核心分组处理器芯片112)来支持网络设备100的各种缓冲需求,缓冲需求例如取决于网络设备100在网络内的位置。
23.在操作中,由网络设备经由网络端口108接收的分组被提供给分组处理器112以用于处理该分组。在一个实施例中,分组处理器112包括转发引擎130,转发引擎130被配置为基于来自分组的报头的信息,来确定将经由其从网络设备100传输分组的一个或多个网络端口108。在一个实施例中,转发引擎130包括或耦合到转发数据库(未示出),该转发数据库存储与地址(例如,媒体访问控制(mac)地址、互联网协议(ip)地址等)相关联的转发信息(例如,端口信息)和/或其他合适的信息。在一个实施例中,转发引擎130被配置为利用报头信息来查询转发数据库中的信息,该信息指示分组将转发到的一个或多个网络端口108。仅作为一个说明性示例,转发引擎130被配置为使用分组的报头中的目标地址,来在存储目标地址和网络端口108之间的对应关系的转发数据库(未示出)中执行查询,以确定将经由其传输分组的特定网络端口108。作为另一个说明性示例,转发引擎130被配置为使用分组的报头中的vlan id,来在存储vlan id和网络端口108之间的对应关系的转发数据库(未示出)中执行查询,以确定用于分组的特定的网络端口108的集合。根据一个实施例,转发引擎130被配置为将网络端口(或多个网络端口集合)的id存储在与分组相对应的分组描述符中。在一个实施例中,分组处理器112被配置为还执行分组的分类,例如确定分组与其相关联的优先级、分组所属的分组流等。
24.在一个实施例中,分组处理器112还包括出口队列管理器132。出口队列管理器132被配置为将由分组处理器112处理的分组排队在多个出口队列136中的一个出口列队136中。在一个实施例中,出口队列136对应于相应的网络端口108。在另一个实施例中,出口队列136对应于相应的网络端口108和相应的业务流优先级。例如,在一个实施例中,出口队列136的第一子集对应于第一网络端口108,并被用来对将经由第一网络端口108传输的分组进行缓冲,其中在出口队列136的第一子集中的相应的出口队列136被用来对与业务流相对应的分组进行缓冲,该业务流与相应的优先级相关联。类似地,在一个实施例中,出口队列136的第二子集对应于第二网络端口108,并被用来对将经由第二网络端口108传输的分组进行缓冲,其中出口队列136的第二子集中的相应的出口队列136被用来对对应于与相应的优先级相关联的业务流的分组进行缓冲,以此类推。一般来说,在一个实施例中,由分组处理器112处理的分组被排队在适当的一个或多个出口队列136中,以用于随后经由被确定用于该分组的一个或多个网络端口108来传输该分组。
25.在一个实施例中,出口队列管理器132包括出口队列监测器134。出口队列监测器134被配置为监测与出口队列136相关联的指标,并且基于监测与出口队列136相关联的指标,来检测出口队列136中何时发生拥堵。例如,出口队列监测器136被配置为监测出口队列136的填充水平或长度,并且当特定出口队列136的填充水平或长度越过(例如,高于)阈值时,检测特定出口队列136中的拥堵。在一个实施例中,在没有拥堵、并且在分组等待从网络设备100传输时没有变得拥堵的出口队列136中进行排队的分组保持在内部分组存储器124
中,直到分组被调度以用于从网络设备100传输。
26.另一方面,在一个实施例中,当出口队列监测器134检测到特定出口队列136中的拥堵时,出口队列管理器132指使存储器控制器120将内部分组存储器124中的特定出口队列136中进行排队的一个或多个分组转移到外部存储器128。作为响应,存储器控制器120检索在特定出口队列中进行排队的一个或多个分组,并将该一个或多个分组转移到外部分组存储器128。在其中外部分组存储器128经由网络端口108而被耦合到网络设备100的一个实施例中,存储器控制器120将从内部分组存储器124检索的一个或多个分组转发到网络端口108,以用于将分组传输到外部分组存储器128。作为另一个示例,在其中外部分组存储器128被提供以取代与网络端口108相对应的端口芯片或phy芯片的一个实施例中,存储器控制器120将一个或多个分组直接转发到外部分组存储器128。
27.在其中网络设备100被配置为利用多个外部分组存储器128的一个实施例中,存储器控制器120被配置为从多个外部分组存储器128之中选择将分组转移到的特定外部分组存储器128。在一个实施例中,存储器控制器120被配置为选择相同的存储器128以用于转移来自特定出口队列136的分组,以使得分组按照在特定出口队列136内的顺序而被排队在特定外部分组存储器128内。另一方面,在一个实施例中,存储器控制器120被配置为在不同的外部分组存储器128之间分配来自不同的出口队列136的分组的溢出,以便在多个外部分组存储器128之间分配溢出的业务带宽。在一个实施例中,存储器控制器120被预先配置为选择特定外部分组存储器128,以用于转移来自特定出口队列136的分组。在另一个实施例中,存储器控制器120被配置为动态地选择特定外部分组存储器12以用于转移来自特定出口队列136的分组。
28.在一个实施例中,当存储器控制器120将分组转移到外部分组存储器128时,存储器控制器120还向外部分组存储器128提供分组与其相对应的特定出口队列136的指示。例如,在一个实施例中,存储器控制器120在转发用于转移到外部分组存储器128的分组之前,将特定出口队列136的指示添加到分组的报头,例如在添加到分组的报头的标签中。在其中存储器控制器120将多个分组的一个组转移到外部分组存储器128的一个实施例中,存储器控制器设备120生成标签以包括该分组的组与其相对应的特定出口队列126的指示,并将该标签作为报头附接到多个分组的一个组。在另一个实施例中,存储器控制器120在单独的带内控制信号或带外控制信号中提供出口队列136的指示,带内控制信号或带外控制信号是从网络设备100提供给外部分组存储器128的,分别来自分组或多个分组的一个组到外部分组存储器128的转移。在一个实施例中,外部分组存储器128被配置为维持与出口列队,该出口列队与分组从其转移到外部分组存储器128的出口队列136相对应。在一个实施例中,外部分组存储器128被配置为将从网络设备100接收的分组或各多个分组的一个组排队在出口列队中,该出口列队与分组从其转移到外部分组存储器128的出口队列136相对应。
29.在一个实施例中,响应于来自出口队列管理器132的将一个或多个分组从特定出口队列136转移到外部分组存储器136的指令,存储器控制器120将一个或多个分组从特定出口队列136的中间部分转移到外部存储器128,而出口队列136的头部部分和尾部部分保留在内部分组存储器124中。当来自特定出口队列136的中间部分的分组被存储在外部存储器128中时,存储器控制器120继续从内部分组存储器124中的特定出口队列136的头部部分
检索分组,并将分组转发到网络端口108以用于从网络设备100传输分组。另外,在一个实施例中,存储器控制器120继续在内部分组存储器124中的出口队列136的尾部处,对被引导到特定网络端口108的新分组进行排队。
30.在一个实施例中,出口队列管理器132的出口队列监测器134被配置为:在出口队列136的中间部分被存储在外部存储器128中的同时,监测内部分组存储器124中的出口队列136的头部部分。在一个实施例中,响应于出口队列监测器134检测到内部分组存储器124中的出口队列136的头部部分的填充水平或长度低于阈值,出口队列管理器132触发存储器控制器120,以启动出口队列136的中间部分中的分组从外部分组存储器128回到内部分组存储器124的转移。在一个实施例中,存储器控制器120被配置为通过生成控制消息(其包括将分组从其中转移回到内部分组存储器124的特定出口队列136的指示),来启动队列136的中间部分中的分组从外部分组存储器128回到内部分组存储器124的转移,并且将该控制消息提供给外部分组存储器128。例如,在一个实施例中,存储器控制器120被配置为将控制信息转发到与外部分组存储器128耦合的网络端口108,以用于将控制信息传输到外部分组存储器128的分组,而“带内”传输到外部分组存储器12。在另一个实施例中,控制消息经由网络设备100和外部分组存储器128之间的控制线路而被“带外”传输到外部分组存储器设备128。
31.响应于接收到指示特定出口队列136的控制消息,外部分组存储器128(或容纳外部分组存储器128的设备)启动检索在外部分组存储器128中的对应出口队列中的分组,并将分组传输回到网络设备100。在一个实施例中,分组由网络设备100接收,例如经由耦合到外部分组存储器128的网络端口108或者经由到外部分组存储器128的另一个接口),并被提供给存储器控制器120。存储器控制器120被配置为将分组排队回到内部分组存储器124中的特定出口队列136中。为此,在一个实施例中,存储器控制器120从出口队列管理器132获得在内部分组存储器124中放置分组的存储器位置(例如,缓冲器)的指示,以使得分组被出口队列管理器132链接回内部分组存储器124中的出口队列136的头部。在一个实施例中,当来自出口队列136的中间的最后一个分组从外部分组存储器128转移到内部分组存储器124时,最后一个分组也与内部分组存储器124中的队列的尾部部分重新链接。根据一个实施例,由分组处理器112实现的用于将分组从内部分组存储器124转移到外部分组存储器128、以及将分组从外部分组存储器128转移回到内部分组存储器124的示例性过程,将在下面参照图2a-图2d更详细地描述。在其他实施例中,分组处理器112实现了用于将分组转移到外部分组存储器128以及从外部分组存储器128转移分组的其他合适的过程。随后,在一个实施例中,当分组的传输从出口队列136被调度时,存储器控制器120从内部分组存储器124中的特定出口队列136检索分组,并将分组转发到特定网络端口108,以用于从网络设备100传输分组。
32.图2a-图2d是图示了根据一个实施例的用于将分组从第一分组存储器中的出口队列转移到第二分组存储器、以及将分组从第二分组存储器转移回到第一分组存储器的过程200的示意图。在一个实施例中,过程200由图1的网络设备100来实现,以将分组从内部分组存储器124转移到外部分组存储器128,并将分组从外部分组存储器128转移回到内部分组存储器124。为了便于解释,参照图1的网络设备100来描述过程200。在一些实施例中,过程200与不同于图1的网络设备100的网络设备一起使用。此外,尽管仅参照一个出口队列来说
明和描述过程200,但是在实施例中,网络设备100在任何给定的时间处针对由网络设备100所维持的多个出口队列来执行过程200。
33.在一个实施例中,队列216(诸如出口队列,例如对应于图1中的出口队列136)由出口队列管理器132维持作为内部分组存储器124中的分组的链接列表。为了将出口队列216维持作为内部分组存储器124中的链接列表,出口队列管理器132被配置为维持被存储在包括在出口队列管理器132中、或耦合到出口队列管理器132的本地存储器或寄存器中的多个指示符(例如,指针),以存储内部分组存储器124中的出口队列216中的元件(例如,缓冲器)的存储器位置的指示。首先参考图2a,出口队列管理器132被配置为维持“头部.头部”(head.head)指示符(例如,指针)218,以指示在其处当前在出口队列216的头部处的分组被存储在内部分组存储器124中的存储器位置(例如,缓冲器)。出口队列管理器132还被配置为维持“尾部.尾部”(tail.tail)指示符(例如,指针)220,以指示要在出口队列216中进行排队的下一个分组要被放置在内部分组存储器124中的存储器位置。
34.在一个实施例中,对出口队列216中的分组进行存储的内部分组存储器124中的每个元件(例如,缓冲器)也存储指向其中存储队列216中的下一个分组的元件的指示(例如,指针)。当出口队列216被调度用于从网络设备100的传输时,出口队列管理器132向存储器控制器120提供头部.头部指示符218的当前值。作为响应,存储器控制器120从内部分组存储器124中的由头部.头部指示符216所指示的存储器位置,检索来自出口队列216的头部的分组,并将该分组转发到对应的网络端口108以用于传输该分组。在从内部分组存储器124检索分组的同时,存储器控制器120检索存储出口队列216中的下一分组的存储器位置(例如,缓冲器)的指示符,该下一分组现在位于出口队列216的头部处。存储器控制器120将存储出口队列216中的该下一分组的存储器位置(例如,缓冲器)的指示符提供给出口队列管理器132,并且出口队列管理器132更新头部.头部指示符220的值,以指示当前在出口队列216的头部处的分组的存储器位置。另一方面,在一个实施例中,当新的分组要在出口队列216中进行排队时,出口队列管理器132将尾部.尾部指示符220的当前值提供给存储器控制器120,并且存储器控制器120将该分组放置在内部分组存储器124中由尾部.尾部指示符220所指示的存储器位置处,其中尾部.尾部指示符220的当前值被存储在内部分组存储器124中的存储出口队列216中的先前分组的元件中。在一个实施例中,图2a中的出口队列216相对较短,并且出口队列216被维持作为完全在内部分组存储器124中形成的单个链接列表。
35.现在参考图2b,在一个实施例中,随着出口队列216在内部分组存储器124中的增长,并且当在出口队列216中检测到拥堵时,存储器控制器120将一个或多个分组或者多个分组的一个组从出口队列216的中间部分216b转移到外部分组存储器128,而出口队列216的头部部分216a和尾部部分216c保留在第一分组存储器124中。在一个实施例中,例如,出口队列监测器134被配置为:当队列216的长度(例如,填充水平)越过阈值时,检测出口队列216中的拥堵。在一个实施例中,当出口队列监测器134检测到内部分组存储器124中的出口队列216中的拥堵时,出口队列管理器132将尾部.尾部指示符220的当前值保存为头部.尾部指示符224。在一个实施例中,出口队列管理器132被配置为继续对在内部分组存储器124中的出口队列216的尾部处的后续分组进行排队。另外,在一个实施例中,存储器控制器120被配置为继续从出口队列216的头部检索分组,并将分组转发到对应的网络端口108以
进行传输。在一个实施例中,当可以被存储在外部分组存储器128中的单个缓冲器中的多个分组的一个组(例如,四个分组或另一个合适数量的分组的一个组)被排队在内部分组存储器124中时,存储器控制器120在单个转移中,将该分组的组从内部分组存储器124转移到外部分组存储器128。
36.继续参考图2b,在一个实施例中,存储器控制器120从在“头部.尾部”(head.tail)指针224所指示的存储器位置处的分组开始,从出口队列216中转移分组。在一个实施例中,当存储器控制器120从头部.尾部指针224所指示的存储器位置检索分组时,存储器控制器120获得出口队列216中的下一分组的指针,并将出口队列216中的下一分组转移到外部分组存储器128,以此类推。在一个实施例中,被引导到出口队列216的新分组继续被添加到内部分组存储器124中的出口队列216的尾部。而且,在一个实施例中,分组继续从内部分组存储器124中的出口队列216的头部被检索,以用于从网络设备100传输分组。
37.在一个实施例中,从出口队列216的中间转移到外部分组存储器128的分组或分组的组被排队作为外部分组存储器128中的链接列表,该链接列表所处于的顺序是在外部分组存储器128处接收分组或分组的组的顺序。例如,与外部分组存储器128相关联的队列管理器被配置为维持“中间.头部”(middle.head)指示符(例如,指针)226,以指示当前在出口队列216的中间部分216b的头部处的分组被存储在外部分组存储器128中的存储器位置(例如,缓冲器)。与外部分组存储器128相关联的出口队列管理器也被配置为维持“中间.尾部”(middle.tail)指示符(例如,指针)228,以指示要在出口队列216中进行排队的下一个分组要被放置在内部分组存储器124中的存储器位置。此外,在一个实施例中,存储来自出口队列216的中间部分216b的分组的外部分组存储器128中的每个元件(例如,缓冲器)也存储对于存储来自出口队列216的中间部分216b的下一分组的元件的指示(例如,指针)。在一个实施例中,与外部分组存储器128相关联的队列管理器被包括在分组处理器112的内部。例如,在一个实施例中,外部分组存储器128是简单的基于字的读/写存储器,其不包括队列化功能性。在另一个实施例中,与外部分组存储器128相关联的队列管理器在分组处理器110的外部。例如,在一个实施例中,与外部分组存储器128相关联的队列管理器被包括在容纳外部分组存储器128的外部设备中。
38.现在参考图2c,例如,出口队列监测器134检测内部存储器124中的队列的头部部分中的分组的数量已经下降到低于阈值。响应于检测到出口队列216的头部部分中的分组的数量低于阈值,存储器控制器120请求从出口队列216的中间部分转移一个或多个分组或多个分组的一个组,以从外部分组存储器128转移回到内部分组存储器124。例如,存储器控制器120生成请求信号,该请求信号指示针对其转移分组的特定出口队列216。在一个实施例中,该请求信号还指示要从外部分组存储器128传输到内部分组存储器124的、来自特定出口队列216的分组的数量。在另一个实施例中,该请求信号指示缓冲器地址,该缓冲器地址存储在外部分组存储器128中的特定出口队列216b的中间部分的头部处的多个分组的一个组。然后,在一个实施例中,从当前在出口队列216的中间部分216b的头部(如中间.头部指示符226的当前值所指示的)处的分组或分组的组开始转移分组,并继续沿着中间部分216b向下转移,直到来自中间部分216b的最后一个分组被转移到内部分组存储器124。随后,存储器控制器120请求将附加分组或附加分组的组从中间部分216b按照需要转移到内部分组存储器124,以用于从网络设备100传输分组。在一个实施例中,响应于随后的请
求,在外部分组存储器128中的中间部分216b的头部处的分组或分组的组被转移回到内部分组存储器124,依此类推。而且,在一个实施例中,存储器控制设备120继续将附加分组或附加分组的组从内部分组存储器124中的队列216转移到外部分组存储器128中的队列216b的中间部分。
39.现在参考图2d,在一个实施例中,从外部分组存储器128被转移到内部分组存储器124的分组与内部分组存储器124中的出口队列216的头部部分218的尾部链接。例如,在一个实施例中,出口管理器132通过如下方式来对从外部分组存储器转移到内部分组存储器124的分组进行链接:将转移到外部分组存储器128的第一分组与内部分组124中的由头部.尾部指示符222的当前值所指示的分组链接,从而更新头部.尾部指示符222,从而将转移到外部分组存储器的下一分组与内部分组124中的由头部.尾部指示符222的当前值所指示的分组链接,以此类推。而且,在一个实施例中,在出口队列216的中间部分的尾部处的分组被链接到内部分组存储器124中的出口队列216的尾部部分的头部。
40.图3是图示了根据一个实施例的用于在网络设备中处理分组的示例性方法300的流程图。在一个实施例中,图1的网络设备100实现了方法300以处理分组。例如,在一个实施例中,网络设备100的分组处理器112至少实现了方法300的一部分以处理分组。为了便于解释,参照图1的网络设备100描述方法300。在其他实施例中,该方法300由其他合适的网络设备来实现。
41.在框302,由网络设备接收分组。在一个实施例中,分组经由网络设备100的网络端口108被接收。在一个实施例中,由网络设备接收的分组被提供给分组处理器(例如,分组处理器112)以用于处理分组。
42.在框304,由分组处理器处理分组,以至少确定网络设备的多个网络端口之中的一个或多个网络端口,该分组将经由该一个或多个网络端口从网络设备传输。在一个实施例中,分组被网络设备的分组处理器112(例如,转发引擎130)处理以确定传输分组所经由的一个或多个端口108。
43.在框306,在第一分组存储器中对分组进行缓冲,例如因为端口不是立即可用于分组的传输。在一个实施例中,在网络设备内部的第一分组存储器(例如,分组存储器124)中对分组进行缓冲。在一个实施例中,第一分组存储器具有足够高的访问带宽以支持由网络设备所支持的全部带宽。例如,在一个实施例中,第一分组存储器支持以与网络设备所支持的线路速率相对应的速率来写入和检索分组。在一个实施例中,在第一分组存储器中对分组进行缓冲包括在第一分组存储器中形成的多个出口队列中的出口队列中对分组进行排队,相应的出口队列对应于网络设备的相应的端口和/或分组的相应的优先级。
44.在框308,在第一分组存储器中的队列中检测拥堵。在一个实施例中,出口队列监测器134检测第一分组存储器中的队列中的拥堵。在一个实施例中,在第一分组存储器中形成的特定出口队列中检测到拥堵。例如,当特定出口队列的填充水平或长度超过阈值时,在特定出口队列中检测到拥堵。在其他实施例中,以其他合适的方式检测拥堵。
45.在框310,响应于检测第一分组存储器中的队列中的拥堵,在相应的一个或多个转移中,将来自第一分组存储器的多个分组的一个或多个组转移到第二分组存储器。在一个实施例中,多个分组的一个或多个组被转移到分组存储器(例如,分组存储器128),该分组存储器在网络设备的分组处理器外部、或被安置在网络设备外部的单独的存储器设备
中。第二分组存储器被配置为对由网络设备所支持的业务带宽的一部分进行缓冲。在一个实施例中,第二分组存储器没有足够高的访问带宽来支持网络设备所支持的全部带宽。例如,在一个实施例中,第二分组存储器不支持以与网络设备所支持的线路速率相对应的速率来写入和检索分组。在一个实施例中,将一个或多个分组从第一分组存储器中的被检测到拥堵的出口队列转移到第二分组存储器中的对应出口队列。例如,在一个实施例中,将出口队列的中间部分从第一分组存储器转移到第二分组存储器中的对应出口队列,而出口队列的头部部分和尾部部分保留在第一分组存储器中。
46.在框312,在将多个分组的一个组从第一分组存储器转移到第二分组存储器之后,并且在从网络设备传输该多个分组的一个组之中的分组之前,请求将该多个分组的一个组转移回到第一分组存储器。例如,存储器控制器120生成从第二分组存储器转移该多个分组的一个组的请求,并向第二分组存储器提供该请求,以请求将该多个分组的一个组从第二分组存储器转移到第一分组存储器。在一个实施例中,响应于检测到在第一分组存储器中对该多个分组的一个组进行排队的出口队列的头部的长度低于阈值,请求将该多个分组的一个组从第二分组存储器转移到第一分组存储器。在一个实施例中,当该多个分组的一个组从第二分组存储器转移到第一分组存储器时,该多个分组的一个组与第一分组存储器中的出口队列的头部的尾部重新链接。
47.在框314,从第一分组存储器检索从第二分组存储器转移回到第一分组存储器的分组。例如,当分组处于第一分组存储器中的出口队列的头部处并且当该出口队列被调度用于从网络设备100传输时,从第一分组存储器检索该分组。在框318,从第一分组存储器检索的分组被转发到被确定用于从网络设备传输一个或多个分组的一个或多个网络端口。
48.在一个实施例中,一种用于在网络设备中处理分组的方法,包括:在网络设备的分组处理器处,接收经由该网络设备的多个网络端口之中的网络端口进入的分组;用分组处理器处理该分组,以至少确定该分组从该网络设备传输将经由的该多个网络端口之中的一个或多个网络端口;用分组处理器将在第一分组存储器中对分组进行缓冲;检测第一分组存储器中的队列中的拥堵;响应于检测到第一分组存储器中的拥堵,在相应的一个或多个转移中,动态地将相应的多个分组的一个或多个组从第一分组存储器转移到第二分组存储器,该第二分组存储器被配置为对由网络设备所支持的业务带宽的一部分进行缓冲;在将多个分组的一个组从第一分组存储器转移到第二分组存储器之后,并且在从网络设备传输多个分组的一个组之中的分组之前,用分组处理器请求将多个分组的一个组从第二分组存储器转移回到第一分组存储器;用分组处理器,从第一分组存储器检索从第二分组存储器转移回到第一分组存储器的分组;以及用分组处理器,将从第一分组存储器检索的分组转发到被确定用于从网络设备传输分组的一个或多个网络端口。
49.在其他实施例中,该方法包括以下特征中的一个或多个特征的任何适当组合。
50.在第一分组存储器中的列队中对分组进行缓冲包括:在第一分组存储器中形成的出口队列中对分组进行缓冲,该出口队列与分组被网络设备传输将经由的网络端口相对应。
51.检测第一分组存储器中的队列中的拥堵包括:检测与网络设备的特定网络端口相对应的特定出口队列中的拥堵。
52.将多个分组的一个或多个组转移到第二分组存储器包括:将多个分组的一个或
多个组从特定出口队列转移到第二分组存储器。
53.将多个分组的一个或多个组从特定出口队列转移到第二分组存储器包括:从特定出口队列的中间部分转移该多个分组的一个或多个组,而特定出口队列的至少头部部分保留在第一分组存储器中。
54.该方法还包括:在来自特定出口队列的中间的该多个分组的一个或多个组被存储在第二分组存储器中的同时,对被存储在第一分组存储器中的特定出口队列的尾部部分的尾部处的一个或多个附加分组进行排队。
55.该方法还包括:在来自特定出口队列的中间的该多个分组的一个或多个组被存储在第二分组存储器中的同时,从第一分组存储器中的特定出口队列的头部部分检索分组,并且从网络设备的特定网络端口传输从第一分组存储器中的特定出口队列的头部部分检索的分组。
56.请求转移该多个分组的一个或多个组之中的分组包括:响应于检测到存储在第一分组存储器中的特定出口队列的头部部分的长度低于阈值,请求将分组从第二分组存储器中的特定出口队列的中间部分转移到第一分组。
57.该方法还包括:将从第二分组存储器转移回到第一分组存储器的分组与第一分组存储器中的特定出口队列的头部部分的尾部链接。
58.在第一分组存储器中的队列中对分组进行缓冲包括:在分组处理器内部的第一存储器设备中的队列中对分组进行缓冲,并且将一个或多个分组从第一分组存储器转移到第二分组存储器包括:将一个或多个分组转移到分组处理器外部的第二存储器设备。
59.第二分组存储器设备经由网络设备的多个网络端口之中的特定网络端口而被耦合到网络设备。
60.将多个分组的一个或多个组转移到第二存储器设备包括:从第一存储器设备检索多个分组的一个组,以及将多个分组的一个组转发到特定网络端口,以用于经由网络端口将多个分组的一个组作为单个转移而传输到第二存储器设备。
61.第二分组存储器是分组处理器外部的多个第二分组存储器中的一个第二分组存储器,相应的第二分组存储器被配置为对由网络设备所支持的业务带宽的相应部分进行缓存。
62.该方法还包括:用分组处理器,从多个第二存储器之中选择特定第二存储器,并且在相应的转移中,将多个分组的一个或多个组转移到从多个第二存储器之中选择的特定第二分组存储器。
63.在另一个实施例中,一种网络设备包括被配置为耦合到多个网络链路的多个网络端口以及耦合到多个网络端口的分组处理器。该分组处理器被配置为:处理经由网络设备的多个网络端口之中的网络端口接收的分组,以至少确定分组从网络设备传输将经由的该多个网络端口之中的一个或多个网络端口;将分组缓冲在第一分组存储器中的队列中;检测第一分组存储器中的队列中的拥堵;响应于检测到第一分组存储器中的拥堵,在相应的一个或多个转移中,动态地将相应的多个分组的一个或多个组从第一分组存储器转移到第二分组存储器,该第二分组存储器被配置为对由网络设备所支持的业务带宽的一部分进行缓冲;在将多个分组的一个组从第一分组存储器转移到第二分组存储器之后,并且在从网络设备传输该多个分组的一个组之中的分组之前,请求将该多个分组的一个组从
第二分组存储器转移回到第一分组存储器;从第一分组存储器检索从第二分组存储器转移回到第一分组存储器的分组;以及将从第一分组存储器检索的分组转发给被确定用于从网络设备传输分组的一个或多个网络端口。
64.在其他实施例中,网络设备包括以下特征中的一个或多个的任何合适组合。
65.分组处理器被配置为:在第一分组存储器中形成的出口队列中对分组进行缓冲,该出口队列与分组被网络设备传输将经由的网络端口相对应。至少通过检测与网络设备的特定网络端口相对应的特定出口队列中的拥堵,来检测第一分组存储器中的队列中的拥堵,并且至少通过将多个分组的一个或多个组从特定出口队列转移到第二分组存储器,来将多个分组的一个或多个组转移到第二分组存储器。
66.分组处理器被配置为从特定出口队列的中间部分转移该多个分组的一个或多个组,而特定出口队列的至少头部部分保持在第一分组存储器中。
67.分组处理器还被配置为:当来自特定出口队列的中间的多个分组的一个或多个组被存储在第二分组存储器中时,对被存储在第一分组存储器中的特定出口队列的尾部部分的尾部处的一个或多个附加分组进行排队。
68.分组处理器还被配置为:从第一分组存储器中的特定出口队列的头部部分检索一个或多个分组,并且使从第一分组存储器中的特定出口队列的头部部分检索的一个或多个分组从网络设备的特定网络端口传输。
69.分组处理器被配置为:响应于检测到存储在第一分组存储器中的特定出口队列的头部部分的长度低于阈值,请求将多个分组的一个或多个组之中的分组从第二分组存储器的特定出口队列的中间部分转移到第一分组。
70.分组处理器还被配置为将从第二分组存储器转移回到第一分组存储器的分组与第一分组存储器中的特定出口队列的头部部分的尾部链接。
71.第一分组存储器驻留在分组处理器内部的第一存储器设备中。
72.第二分组存储器驻留在分组处理器外部的第二存储器设备中。
73.第二分组存储器设备经由网络设备的多个网络端口之中的特定网络端口而被耦合到网络设备。
74.分组处理器被配置为至少通过以下方式将多个分组的一个组转移到第二存储器设备:从第一存储器设备检索多个分组的一个组,并且将多个分组的一个组转发到特定网络端口,以用于经由网络端口将多个分组的一个组作为单个转移而传输到第二存储器设备。
75.第二分组存储器是分组处理器外部的多个第二分组存储器中的一个第二分组存储器,相应的第二分组存储器被配置为对由网络设备所支持的业务带宽的相应部分进行缓冲。
76.分组处理器还被配置为:从多个第二存储器之中选择特定第二存储器,并且将多个分组的一个或多个组转移到从多个第二存储器之中选择的特定第二分组存储器。
77.上述各种块、操作和技术中的至少一些可以适当地利用专用硬件来实现,专用硬件诸如分立组件、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)、执行固件指令的处理器、执行软件指令的处理器、或其任何组合中的一者或多者。当利用执行软件或固件指令的处理器来实现时,软件或固件指令可以被存储在任何合适的计算机可读存储器中,诸
如在磁盘、光盘或其他存储介质等。软件或固件指令可以包括机器可读指令,该机器可读指令在由一个或多个处理器执行时使一个或多个处理器执行各种动作。
78.虽然本发明已经参照特定示例进行了描述,但是其仅用于说明本发明,而不是对本发明的限制,在不背离本发明的范围的情况下,可以对所公开的实施例进行改变、添加和/或删除。

技术特征:


1.一种用于在网络设备中处理分组的方法,所述方法包括:在所述网络设备的分组处理器处,接收经由所述网络设备的多个网络端口之中的网络端口进入的分组,用所述分组处理器处理所述分组,以至少确定所述分组从所述网络设备传输将经由的所述多个网络端口之中的一个或多个网络端口,用所述分组处理器,在第一分组存储器中的队列中对所述分组进行缓冲,检测所述第一分组存储器中的队列中的拥堵,响应于检测到所述第一分组存储器中的拥堵,在相应的一个或多个转移中,动态地将相应的多个分组的一个或多个组从所述第一分组存储器转移到第二分组存储器,所述第二分组存储器被配置为对由所述网络设备所支持的业务带宽的一部分进行缓冲,在将多个分组的一个组从所述第一分组存储器转移到所述第二分组存储器之后,并且在从所述网络设备传输所述多个分组的所述一个组之中的分组之前,用所述分组处理器请求将所述多个分组的所述一个组从所述第二分组存储器转移回到所述第一分组存储器,用所述分组处理器,从所述第一分组存储器检索从所述第二分组存储器转移回到所述第一分组存储器的所述分组;以及用所述分组处理器,将从所述第一分组存储器检索的所述分组转发到被确定用于从所述网络设备传输所述分组的所述一个或多个网络端口。2.根据权利要求1所述的方法,其中:在所述第一分组存储器中的所述队列中对所述分组进行缓冲包括:在所述第一分组存储器中形成的出口队列中对所述分组进行缓冲,所述出口队列与所述分组被所述网络设备传输将经由的网络端口相对应,检测所述第一分组存储器中的所述队列中的拥堵包括:检测与所述网络设备的特定网络端口相对应的特定出口队列中的拥堵,以及将所述多个分组的一个或多个组转移到所述第二分组存储器包括:将所述多个分组的一个或多个组从所述特定出口队列转移到所述第二分组存储器。3.根据权利要求2的方法,其中将所述多个分组的一个或多个组从所述特定出口队列转移到所述第二分组存储器包括:从所述特定出口队列的中间部分转移所述多个分组的一个或多个组,而所述特定出口队列的至少头部部分保留在所述第一分组存储器中。4.根据权利要求3所述的方法,还包括:在来自所述特定出口队列的中间的所述多个分组的一个或多个组被存储在所述第二分组存储器中的同时,对被存储在所述第一分组存储器中的所述特定出口队列的尾部部分的尾部处的一个或多个附加分组进行排队。5.根据权利要求3所述的方法,还包括:在来自所述特定出口队列的中间的所述多个分组的一个或多个组被存储在所述第二分组存储器中的同时,从所述第一分组存储器中的所述特定出口队列的所述头部部分检索分组,以及从所述网络设备的所述特定网络端口传输从所述第一分组存储器中的所述特定出口队列的所述头部部分检索的所述分组。6.根据权利要求3所述的方法,其中请求转移所述多个分组的一个或多个组之中的所述分组包括:响应于检测到存储在所述第一分组存储器中的所述特定出口队列的所述头
部部分的长度低于阈值,请求将所述分组从所述第二分组存储器中的所述特定出口队列的所述中间部分转移到所述第一分组。7.根据权利要求3所述的方法,还包括:将从所述第二分组存储器转移回到所述第一分组存储器的所述分组与所述第一分组存储器中的所述特定出口队列的所述头部部分的尾部链接。8.根据权利要求1所述的方法,其中:在所述第一分组存储器中的队列中对所述分组进行缓冲包括:在所述分组处理器内部的第一存储器设备中对所述分组进行缓冲,以及将所述一个或多个分组从所述第一分组存储器转移到所述第二分组存储器包括:将所述一个或多个分组转移到所述分组处理器外部的第二存储器设备。9.根据权利要求3所述的方法,其中:所述第二分组存储器设备经由所述网络设备的所述多个网络端口之中的特定网络端口而被耦合到所述网络设备,以及将所述多个分组的一个或多个组转移到所述第二存储器设备包括:从所述第一存储器设备检索多个分组的一个组,以及将所述多个分组的所述一个组转发到所述特定网络端口,以用于经由所述网络端口将所述多个分组的所述一个组作为单个转移而传输到所述第二存储器设备。10.根据权利要求1所述的方法,其中:所述第二分组存储器是所述分组处理器外部的多个第二分组存储器中的一个第二分组存储器,相应的第二分组存储器被配置为对由所述网络设备所支持的业务带宽的相应部分进行缓存,以及所述方法还包括:用所述分组处理器,从所述多个第二存储器之中选择特定第二存储器,以及在相应的转移中,将所述多个分组的一个或多个组转移到从所述多个第二存储器之中选择的所述特定第二分组存储器。11.一种网络设备,包括:多个网络端口,被配置为耦合到多个网络链路;以及分组处理器,耦合到所述多个网络端口,所述分组处理器被配置为:处理经由所述网络设备的所述多个网络端口之中的网络端口接收的分组,以至少确定所述分组从所述网络设备传输将经由的所述多个网络端口之中的一个或多个网络端口,将所述分组缓冲在第一分组存储器中的队列中,检测所述第一分组存储器中的队列中的拥堵,响应于检测到所述第一分组存储器中的拥堵,在相应的一个或多个转移中,动态地将相应的多个分组的一个或多个组从所述第一分组存储器转移到第二分组存储器,所述第二分组存储器被配置为对由所述网络设备所支持的业务带宽的一部分进行缓冲,在将多个分组的一个组从所述第一分组存储器转移到所述第二分组存储器之后,并且在从所述网络设备传输所述多个分组的所述一个组之中的分组之前,请求将所述多个分组的所述一个组从所述第二分组存储器转移回到所述第一分组存储器,从所述第一分组存储器检索从所述第二分组存储器转移回到所述第一分组存储器的
所述分组,以及将从所述第一分组存储器检索的所述分组转发到被确定用于从所述网络设备传输所述分组的所述一个或多个网络端口。12.根据权利要求11所述的网络设备,其中所述分组处理器被配置为:在所述第一分组存储器中形成的出口队列中对所述分组进行缓冲,所述出口队列与所述分组被网络设备传输将经由的网络端口相对应,至少通过检测与所述网络设备的特定网络端口相对应的特定出口队列中的拥堵,来检测所述第一分组存储器中的所述队列中的拥堵,以及至少通过将所述多个分组的一个或多个组从所述特定出口队列转移到所述第二分组存储器,来将所述多个分组的一个或多个组转移到所述第二分组存储器。13.根据权利要求12所述的网络设备,其中所述分组处理器被配置为从所述特定出口队列的中间部分转移所述多个分组的一个或多个组,而所述特定出口队列的至少头部部分保留在所述第一分组存储器中。14.根据权利要求13所述的网络设备,其中所述分组处理器还被配置为:当来自所述特定出口队列的中间的所述多个分组的一个或多个组被存储在所述第二分组存储器中时,对被存储在所述第一分组存储器中的所述特定出口队列的尾部部分的尾部处的一个或多个附加分组进行排队。15.根据权利要求13所述的网络设备,其中所述分组处理器还被配置为:从所述第一分组存储器中的所述特定出口队列的所述头部部分检索一个或多个分组,以及使从所述第一分组存储器中的所述特定出口队列的所述头部部分检索的所述一个或多个分组从所述网络设备的所述特定网络端口传输。16.根据权利要求13所述的网络设备,其中所述分组处理器被配置为:响应于检测到存储在所述第一分组存储器中的所述特定出口队列的所述头部部分的长度低于阈值,请求将所述多个分组的一个或多个组之中的分组从所述第二分组存储器中的所述特定出口队列的所述中间部分转移到所述第一分组。17.根据权利要求13所述的网络设备,其中所述分组处理器还被配置为将从所述第二分组存储器转移回到所述第一分组存储器的所述分组与所述第一分组存储器中的所述特定出口队列的所述头部部分的尾部链接。18.根据权利要求11所述的网络设备,其中:所述第一分组存储器驻留在所述分组处理器内部的第一存储器设备中,并且所述第二分组存储器驻留在所述分组处理器外部的第二存储器设备中。19.根据权利要求11所述的网络设备,其中:所述第二分组存储器设备经由所述网络设备的所述多个网络端口之中的特定网络端口而被耦合到所述网络设备,以及所述分组处理器被配置为至少通过以下方式将多个分组的一个组转移到所述第二存储器设备:从所述第一存储器设备检索所述多个分组的所述一个组,以及将所述多个分组的所述一个组转发到所述特定网络端口,以用于经由所述网络端口
将所述多个分组的所述一个组作为单个转移而传输到所述第二存储器设备。20.根据权利要求11所述的网络设备,其中:所述第二分组存储器是所述分组处理器外部的多个第二分组存储器中的一个第二分组存储器,相应的第二分组存储器被配置为对由所述网络设备所支持的业务带宽的相应部分进行缓冲,以及所述分组处理器还被配置为:从所述多个第二存储器之中选择特定第二存储器,以及将所述多个分组的一个或多个组转移到从所述多个第二存储器之中选择的所述特定第二分组存储器。

技术总结


在第一分组存储器中的队列中对将从网络设备中传输的分组进行缓冲。响应于检测到第一分组存储器中的队列的拥堵,将多个分组的一个组从第一分组存储器转移到第二分组存储器,该第二分组存储器被配置为对由网络设备所支持的业务带宽的一部分进行缓冲。在从网络设备传输多个分组的一个或多个组之中的分组之前,将该多个分组的一个或多个组之中的分组从第二分组存储器转移回到第一分组存储器。从第二分组存储器转移回到第一分组存储器的分组从第一分组存储器中被检索,并被转发到一个或多个网络端口,以用于从网络设备传输分组。以用于从网络设备传输分组。以用于从网络设备传输分组。


技术研发人员:

R

受保护的技术使用者:

马维尔以列(M.I.S.L.)有限公司

技术研发日:

2021.03.18

技术公布日:

2022/12/22

本文发布于:2024-09-21 20:36:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/44432.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:存储器   多个   队列   所述
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议