CN105765928A - 并行处理网络设备中的多级互联网络 - Google Patents

并行处理网络设备中的多级互联网络 Download PDF

Info

Publication number
CN105765928A
CN105765928A CN201480061408.8A CN201480061408A CN105765928A CN 105765928 A CN105765928 A CN 105765928A CN 201480061408 A CN201480061408 A CN 201480061408A CN 105765928 A CN105765928 A CN 105765928A
Authority
CN
China
Prior art keywords
unit
interconnection unit
accelerator engine
interconnection
request
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
CN201480061408.8A
Other languages
English (en)
Other versions
CN105765928B (zh
Inventor
A·卡杜施
R·泽马赫
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN105765928A publication Critical patent/CN105765928A/zh
Application granted granted Critical
Publication of CN105765928B publication Critical patent/CN105765928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

在网络设备的多个相似的分组处理元件之中的分组处理元件处接收分组,并且由该分组处理元件生成指定要由加速器引擎关于该分组执行的处理操作的请求,加速器引擎在功能上与多个相似的分组处理元件不同。将该请求发送到互联网络,该互联网络包括分级布置的多个互联单元。在多个候选路径之中选择通过该互联网络的路径,其中候选路径中的路径不包括该互联网络的同一级内的多个互联单元。之后经由所确定的路径将该请求发送到多个候选加速器引擎之中的被配置为执行处理操作的特定加速器引擎。之后由该特定加速器引擎执行处理操作。

Description

并行处理网络设备中的多级互联网络
相关申请的交叉引用
本公开内容要求于2013年9月10日提交的名称为“CoretoEnginesInterconnect”的美国临时专利申请No.61/875,992以及于2013年12月17日提交的名称为“NG-PPInterconnect”的美国临时专利申请No.61/917,206的权益,在此通过引用将其公开内容整体并入本文。
技术领域
本公开内容大体上涉及并行处理系统中的互联网络,并且更具体地涉及采用这样的互联网络来将并行处理系统的各个部件相互连接以处理网络分组的诸如交换机、桥、路由器、等等的网络设备。
背景技术
本文所提供的背景技术描述是为了总体上给出本公开的背景。就该背景技术部分中所描述的工作的范围以及描述中在提交时并不以其他方式构成现有技术的方面而言,本发明人的工作既非明确也非隐含地被承认形成相对本公开的现有技术。
诸如网络交换机、桥、路由器、等等的一些网络设备采用多个分组处理元件来同时地处理多个分组以提供高吞吐量。例如,网络设备可以利用并行分组处理,其中多个分组处理元件同时地且并行地执行对不同分组的处理。在这样的网络设备中,分组处理元件有时采样在分组处理器的外部的加速器引擎以执行某些处理操作,例如处理密集操作。
发明内容
在实施例中,一种方法包括在网络设备的多个相似的分组处理元件之中的分组处理元件处接收分组。该方法还包括由该分组处理元件生成指定要由加速器引擎关于该分组执行的处理操作的请求,加速器引擎在功能上与多个相似的分组处理元件不同,并且将来自分组处理元件的请求发送到互联网络,该互联网络包括分级布置的多个互联单元。该方法还包括确定通过该互联网络的路径,其中该路径是在多个候选路径中选择的,其中候选路径中的路径不包括该互联网络的同一级内的多个互联单元,并且经由所确定的路径将该请求发送到多个候选加速器引擎之中的被配置为执行处理操作的特定加速器引擎。该方法附加地包括由该特定加速器引擎执行处理操作。
在其他实施例中,该方法包括以下特征中的一个或多个的任何适当的组合。
将该请求发送到互联网络包括将该请求发送到多个互联单元的第一互联单元,其中该第一互联单元处于该互联网络的第一级中。
确定通过互联网络的路径包括由第一互联单元选择特定加速器引擎,其中特定加速器引擎耦合到互联网络的第二级中的互联单元。
选择特定加速器引擎包括在不与第一级中的其他互联单元通信的情况下选择特定加速器引擎。
选择特定加速器引擎包括至少部分基于先前由第一互联单元发送到候选加速器引擎的相应加速器引擎的多个请求来选择特定加速器引擎。
该方法还包括:在相应第二互联单元处生成指示以下中的一个或多个的流量控制信息:(i)耦合到该相应第二互联单元的一个或多个候选加速器引擎的相应负载以及(ii)第一互联单元与第二互联单元之间的相应链路上的拥塞,其中第二互联单元处于互联网络的第二级中;将来自第二互联单元的流量控制信息发送到第一互联单元;在第一互联单元处接收流量控制信息;以及进一步基于接收到的流量控制信息来在第一互联单元处选择特定加速器引擎。
生成指示耦合到相应第二互联单元的一个或多个候选加速器引擎的相应负载的流量控制信息包括基于由互联网络的第一级中的互联单元发送到相应候选加速器引擎的请求的相应数量来生成流量控制信息。
生成指示第一互联单元与相应第二互联单元之间的相应链路上的拥塞的流量控制信息包括基于第二互联单元的输入队列的相应填充水平来生成流量控制信息,该输入队列耦合到第一互联单元与第二互联单元之间的相应链路。
对应于候选加速器引擎的流量控制信息指示包括以下的四个状态中的一个状态:(i)开启状态、(ii)轻负载状态、(iii)重负载状态以及(iv)阻塞状态。
选择特定加速器引擎包括在对应于候选加速器引擎的流量控制信息指示候选加速器引擎处于阻塞状态时从考虑中消除候选加速器引擎。
选择特定加速器引擎包括在流量控制信息指示第一互联单元与第二互联单元之间的链路处于阻塞状态时从考虑中消除耦合到第二互联单元的一个或多个候选加速器引擎。
流量控制信息为第一流量控制信息。
该方法还包括:在第一互联单元处基于第一流量控制信息来生成第二流量控制信息,其中第二流量控制信息指示候选加速器引擎的总负载;将来自第一互联单元的第二流量控制信息发送到耦合到第一互联单元的分组处理元件;由耦合到第一互联单元的分组处理元件接收第二流量控制信息;以及基于第二流量控制信息来调节由分组处理元件对第一互联单元的请求的传送。
在另一实施例中,一种网络设备包括:多个分组处理元件,其被配置为处理从网络接收到的分组,分组处理单元被配置为选择性地接合用于执行关于该分组的某些处理操作的加速器引擎。该网络设备还包括多个加速器引擎,其被配置为执行不由分组处理元件执行的某些处理操作,其中两个或更多个加速器引擎被配置为执行相同类型的处理操作。该网络设备进一步还包括多级互联网络,其被配置为将来自分组处理元件的请求路由到外部处理引擎,多级互联网络包括至少两个互联级,互联级分别包括多个互联单元,其中给定级的互联单元被配置为将请求路由到相邻级的互联单元并且不将请求路由到给定级的互联单元。
在其他实施例中,该装置包括以下特征中的一个或多个的任何适当的组合。
至少一些分组处理元件中的每个分组处理元件被配置为使用存储在非瞬态存储器中的计算机可读指令来执行完成分组的处理。
加速器引擎被配置为执行的处理操作包括以下中的一个或多个:(i)前向查找操作(ii)策略控制查找操作以及(iii)循环冗余校验计算。
第一级的相应互联单元耦合到多个分组处理元件的分组处理元件的相应子集。
第二级的相应互联单元耦合到多个加速器引擎的加速器引擎的相应子集。
第一级中的互联单元耦合到第二级中的互联单元。
第一级的第一互联单元被配置为:从耦合到第一互联单元的分组处理元件接收指定特定处理操作的请求;在被配置为执行特定处理操作的一组候选加速器引擎之中选择加速器引擎;并且将请求发送到第二级中的第二互联单元,第二互联单元耦合到所选择的加速器引擎。
第一互联单元被配置为在不与第一级中的其他互联单元通信的情况下选择特定加速器引擎。
第一互联单元被配置为至少部分基于先前由第一互联单元发送到候选加速器引擎的相应加速器引擎的多个请求来选择特定加速器引擎。
互联网络的第二级中的相应第二互联单元被配置为:生成指示以下中的一个或多个的流量控制信息:(i)耦合到相应第二互联单元的一个或多个候选加速器引擎的相应负载以及(ii)第一互联单元与第二互联单元之间的相应链路上的拥塞;并且将来自第二互联单元的流量控制信息发送到第一互联单元。
第一互联单元还被配置为:接收来自相应第二互联单元的流量控制信息;并且基于接收到的流量控制信息来选择特定加速器引擎。
流量控制信息为第一流量控制信息。
第一互联单元被配置为:基于第一流量控制信息来生成第二流量控制信息,其中第二流量控制信息指示候选加速器引擎的总负载;以及将第二流量控制信息发送到耦合到第一互联单元的分组处理元件。
附图说明
图1是根据实施例的被配置为使用由多级互联网络相互连接的多个分组处理元件和多个加速器引擎来处理分组的示例网络设备的简化框图。
图2是根据实施例的适合于与图1的网络设备一起使用的多级互联网络的框图。
图3是根据实施例的适合于用作图2的互联网络中的第一级单元的示例第一级单元的框图。
图4是根据实施例的适合于用作图2的互联网络中的第二级单元的示例第二级单元的框图。
图5是根据另一实施例的适合于与图1的网络设备一起使用的多级互联网络的框图。
图6是根据实施例的具有单独的前向路径和反向路径多级互联网络的示例网络设备的框图。
图7是根据实施例的用于通过多级互联网络路由请求的示例方法的流程图。
具体实施方式
图1是根据实施例的被配置为使用由多级互联网络相互连接的多个分组处理元件和多个加速器引擎来处理分组的示例网络设备100的简化框图。网络设备100一般是连接两个或更多个计算机系统、网络段、子网、等等的计算机组网设备。例如,在一个实施例中,网络设备100是交换机。然而,要指出网络设备100不必限于特定协议层或特定组网技术(例如,以太网)。例如,在其他实施例中,网络设备100是桥、路由器、VPN集线器、等等。
网络设备100包括网络处理器(或分组处理器)102,并且分组处理器102继而包括多个分组处理元件(PPE)或分组处理节点(PPN)104、多个外部处理引擎106以及耦合在PPE104与外部处理引擎106之间的互联网络108。在实施例中,PPE104被配置为经由互联网络108将处理任务卸载到外部处理引擎106。
网络设备100还包括耦合到分组处理器102的多个网络端口112,并且每个网络端口112经由相应通信链路耦合到通信网络和/或通信网络内的另一适当的网络设备。一般而言,分组处理器102被配置为处理经由入口端口112接收到的分组,被配置为确定要经由其发送分组的相应出口端口112,并且被配置为经由所确定的出口端口112发送分组。在一些实施例中,分组处理器102处理与分组相关联的分组描述符,而不是处理分组本身。在实施例中,分组描述符包括来自分组的一些信息,例如分组的报头信息中的一些或全部,和/或包括由网络设备100针对分组生成的信息。在一些实施例中,分组描述符还包括其他信息,例如分组被存储在与网络设备100相关联的存储器中的位置的指示符。为便于解释,本文的术语“分组”被用于指代分组本身或者与分组相关联的分组描述符。另外,如本文所使用的,术语“分组处理元件(PPE)”和术语“分组处理节点(PPN)”可互换地被用于指代被配置为执行在由网络设备100接收到的分组上的分组处理操作的处理单元。
在实施例中,分组处理器102被配置为将对接收到的分组的处理分布到PPE104。PPE104被配置为同时地并行执行对相应分组的处理。根据实施例,PPE104被配置为使用存储在非瞬态存储器(未示出)中的计算机可读指令来处理分组。在一些实施例中,每个PPE104被配置为执行在分组上的两个或更多个处理操作。例如,在实施例中,每个PPE104被配置为执行分组的所有必需处理(例如,运行以完成处理)。在实施例中,每个外部处理引擎106专用于执行一个或几个特定(通常是处理密集的)操作。作为仅仅示例,在示例实施例中,第一外部处理引擎106(例如,引擎106a)是前向查找引擎,第二外部处理引擎106(例如,引擎106x)是策略查找引擎,第三外部处理引擎106(例如,引擎106n)是循环冗余校验(CRC)计算引擎,等等。在对分组的处理期间,PPE104选择性地接合外部处理引擎106以用于执行在分组上的特定处理操作。
在一些实施例中,PPE104和/或加速器引擎106被布置在一个或多个流水线中,其中流水线的每个元件(例如,执行计算机可读指令的处理元件、硬件加速器引擎、等等)执行在分组上的一个或多个处理操作并且将该分组和针对该分组的处理内容传递到流水线中的下面的元件。流水线的下面的处理元件之后基于与该分组相关联的处理内容继续对该分组的处理。在这样的实施例中,流水线的不同元件可以在给定时间处理不同分组。
在实施例中,在对该分组的处理期间,PPE104被配置为选择性地接合外部处理引擎106以执行在分组上的特定处理操作。在至少一些实施例中,PPE104不被配置为执行外部处理引擎106被配置为执行的特定处理操作。在至少一些实施例和/或情景中,外部处理引擎106被配置为执行的特定处理操作通常是高度资源密集的和/或在使用较一般化的处理器(例如,PPE104)来执行操作时将需要相对较长的时间来执行。在至少一些实施例和情景中,PPE104将需要花费明显较长(例如,两倍之长,十倍之长,100倍之长,等等)的时间来执行外部处理引擎106被配置为执行的处理操作。因此,在至少一些实施例和/或情景中,外部处理引擎106通过加速由PPE104执行将花费很长时间的至少一些处理操作来辅助PPE104。因此,外部处理引擎106有时在本文中被称为“加速器引擎”。
为了接合加速器引擎106以执行关于分组的特定处理操作,PPE104生成指定所请求的处理操作(例如,前向查找操作)的类型并且包括数据的请求,该数据例如从分组中(例如,从分组的报头中,例如从分组的报头中提取的目的MAC地址)提取的数据,从分组的净荷中提取的数据,或者以其他方式与分组相关联的数据,例如由网络设备100针对分组生成的数据和/或用于执行处理操作需要的其他信息。在实施例中,PPE104之后将该请求发送到互联网络108,其将该请求定向到用于执行处理操作的恰当的加速器引擎106。在实施例中,在处理操作由加速器引擎106执行之后,处理操作的结果被路由回到PPE104。在实施例中,互联网络108还提供用于对请求的响应进行路由的从加速器引擎106到PPE104的返回路径,其中响应包括由请求指定的处理操作的结果。在另一实施例中,网络设备100包括用于提供用于将处理操作的结果路由回到PPE104的从加速器引擎106到PPE104的返回路径的单独的互联网络。下面参考图6更详细地描述用于将处理操作的结果从加速器引擎106路由到PPE104的示例互联网络。
在实施例中,PPE104被配置为利用由外部处理引擎106执行的处理操作的结果以用于对分组的进一步处理,例如以确定要关于分组进行的某些动作,例如前向动作、策略控制动作、等等。例如,在实施例中,PPE104使用引擎106的前向数据库(FDB)查找的结果来指示分组要向其转发的特定端口。作为另一示例,在实施例中,PPE104使用引擎106的最低前缀匹配引擎(LPM)查找的结果来改变分组中的下一跳地址。
在一些实施例中,PPE104被布置在分组处理集群(PPC)中。每个PPC包括被配置为将来自包含在集群中的PPE104的请求传输到互联网络108的控制器。在实施例中,处理控制器还被配置为将所请求的处理操作的结果从互联网络108转发到包含在集群中的PPE104。实际上,在实施例中,从互联网络108的视角,每个PPC是将请求发送到互联网络108和/或从互联网络108接收所请求的处理操作的结果的单个处理实体。如本文所使用的,术语分组处理元件和分组处理集群可互换地使用以指定经由互联网络将请求发送到加速器引擎和/或经由互联网络从加速器引擎接收处理操作结果的处理元件。
在实施例中,多级互联网络108包括分级布置的多个互联单元,包括第一级122和第二级124。第一级122包括多个第一级单元126,每个第一级单元126耦合到PPE104中的一个或多个PPE。第二级124包括多个第二级单元128,每个第二级单元128耦合到加速器引擎106中的一个或多个加速器引擎。例如,在实施例中,每个第一级单元126耦合到PPE104的相应子集,并且每个第二级单元128耦合到加速器引擎106的相应子集。在实施例中,每个第一级单元126耦合到第二级单元128中的一个或多个。例如,在实施例中,每个第一级单元126耦合到每个第二级单元128。为了图示的清楚性,PPE104与第一级单元126之间的链路、第一级单元126与第二级单元128之间的链路以及第二级单元128与加速器引擎106之间的链路未在图1中示出。
在各个实施例中,网络设备100包括任何适当数量的PPE104和任何适当数量的加速器引擎106。在至少一些实施例中,PPE104的数量与加速器引擎106的数量不同。在这样的实施例中,互联网络108是不对称的,因为向网络108提供输入的源设备的数量与从互联网络108接收输出的目标设备的数量不同。作为仅仅示例,在一个实施例中,网络设备100包括100个PPE104和60个加速器引擎106。在另一实施例中,网络设备100包括其他适当数量的PPE104和/或加速器引擎106。在一些其他实施例中,网络设备100包括等同数量的104和加速器引擎106。在这样的实施例中,互联网络108是将等同数量的源设备和目标设备相互连接的对称网络。
在实施例中,加速器引擎106中的多个加速器引擎被配置为执行某种类型的处理操作。例如,在实施例中,加速器引擎106中的多个加速器引擎被配置为执行前向查找操作,加速器引擎106中的多个加速器引擎被配置为执行策略查找操作,加速器引擎106中的多个加速器引擎被配置为执行CRC计算,等等。在实施例中,互联网络108被配置为从PPE104接收指定某些类型的处理操作的处理请求并且被配置为将这些请求路由到被配置为执行某些类型的处理操作的加速器引擎106。在实施例中,当互联网络108接收指定某种类型的处理操作的处理请求时,互联网络108选择通过互联网络108的路径以用于将该请求路由到被配置为执行指定处理操作的加速器引擎106。互联网络108之后经由所选择的路径将该请求路由到被配置为执行处理操作的加速器引擎106。以这种方式,互联网络108使来自PPE104的多个加速器引擎106抽象化。换言之,在实施例中,从PPE104的视角,被配置为执行某种类型的处理操作的多个加速器引擎106是被配置为执行某种类型的处理操作的单个实体。
仍然参考图1,尽管多级互联网络108被图示为具有两级,其中每级包括多个互联单元,但是在其他实施例中,多级互联网络108包括其他适当数量(例如,3、4、5、等等)的级,其中每级具有一个或多个互联单元。在实施例中,互联网络108的特定级的每个互联单元不耦合到特定级的其他互联单元和/或不被配置为将数据路由到特定级的其他互联单元。在实施例中,互联网络108的特定级的互联单元耦合到相邻级的互联单元中的一个或多个互联单元并且被配置为将请求路由到相邻级的互联单元中的一个或多个互联单元。另一方面,在实施例中,特定级的互联单元不耦合到特定级的其他互联单元和/或不被配置为将请求路由到特定级的其他互联单元。
如以上所讨论的,在实施例中,当互联网络108从PPE104接收指定处理操作的处理请求时,互联网络108选择通过互联网络108的路径以用于将请求路由到被配置为执行指定处理操作的加速器引擎106。因为多个加速器引擎106可以被配置为执行指定处理操作,所以通过互联网络108的多个路径可以可用于到达被配置为执行处理操作的特定加速器引擎106。在实施例中,接收请求的互联单元确定要向其路由请求的下面的级中的互联单元。在实施例中,特定级中的互联单元做出该确定而不需要与特定级中的其他互联单元通信。然而,在做出该确定时,特定级中的互联单元考虑由特定级中的其他互联单元路由通过互联网络108的流量。例如,互联单元至少部分基于互联单元从下面的级的互联单元接收到的流量控制(FC)信息来做出该确定。在实施例中,FC信息指示由特定级的所有互联单元路由到下面的级的互联单元的流量的量。另外,FC信息指示互联网络108内的各个链路和/或将互联网络108耦合到PPE104和加速器引擎106的各个链路的拥塞。
一般而言,在实施例中,与请求相关联的数据在从PPE104到加速器引擎106的方向(如在图1中由“数据”箭头130所指示的)上流动通过互联网络108。相反地,FC信息在从加速器引擎106到PPE104的方向上,即在与互联网络108中的数据流的方向相反的方向(如在图1中由“流量控制”箭头132所指示)上流动通过互联网络108。在实施例中,互联单元使用FC信息来调节路径选择。因此,下游互联单元从上游互联单元接收FC信息并且使用该FC信息来调节数据(例如,请求)到上游互联单元的传送。例如,在各个实施例和/或情景中,包括超载的互联单元的路径和/或导向超载的加速器引擎106的路径和/或包括严重拥塞的链路的路径从针对用于到互联单元的数据传送的路径选择的考虑中消除,或者减少针对其选择这些路径的数据量(或请求的数量)。
如下面将更详细解释的,由互联网络108使用的这些和其他流量控制机制允许互联网络108以均衡化方式来分布通过互联网络108的流量并且还提供对请求在被配置为执行由请求指示的处理操作的加速器引擎106的组之中的均衡化分布,同时还最小化或消除贯穿互联网络108的请求的损失。在至少一些实施例中,这样的流量控制机制允许互联网络108实现该均衡化分布而不需要与特定级的互联单元通信,从而允许高效的且可扩展的互联系统。
作为更具体的示例,在实施例中,在图1中示出的两级互联网络108中,第一级单元126从PPE104接收指定处理操作的请求,并且从一组候选加速器引擎106中选择被配置为执行处理操作的加速器引擎106。第一级单元126之后确定哪个第二级互联单元128耦合到所选择的加速器引擎106并且将该请求连同要对该请求进行定向的所选择的加速器引擎106的指示发送到耦合到所选择的加速器引擎106的第二级单元128。第二级单元128从第一级单元126接收请求并且基于该指示确定要将请求转发到哪个加速器引擎106,并且将请求发送到用于执行由请求指定的处理操作的加速器引擎106。
在实施例中,第一级单元126选择要向其路由请求的加速器引擎106而不需要与其他第一级单元126通信。然而,在实施例中,当做出该选择时,第一级单元126考虑由所有第一级单元126发送到每个候选加速器引擎106的总请求流量。在实施例中,第一级单元126至少部分基于第一级单元126从第二级互联单元128接收到的流量控制(FC)信息来做出该选择。在实施例中,第一级单元126从第二级单元128接收到的FC信息指示由定向到耦合到第二级单元128的加速器引擎106的第二级单元128接收到的流量的量。另外,在实施例中,通过互联网络108传播的FC信息包括通过互联网络108传播的链路状态信息,其指示在加速器引擎106与第二级单元128之间的链路、在第二级单元128与第一级单元126之间的链路和在第一级单元126与PPE104之间的链路上的拥塞。在实施例中,互联网络108中的路径选择还基于链路状态信息。
图2是根据实施例的适合于用作互联网络108的互联网络200的框图。互联网络200是两级互联单元,其具有第一级或入口级210和第二级或出口级212。第一级210包括多个第一级单元214,并且第二级212包括多个第二级单元216。参考图1和图2,在实施例中,第一级单元214适合于用作第一级单元126(图1),并且第二级单元216适合于用作第二级单元128(图1)。为便于解释,图2的互联网络200包括三个第一级单元214和两个第二级单元216。在其他实施例中,互联网络200包括任何其他适当数量的第一级单元214和/或任何其他适当数量的第二级单元216。
在实施例中,每个第一级单元214耦合到PPE104的子集。例如,在实施例中,每个第一级单元214耦合到PPE104的相应子集。在图示的实施例中,第一级单元214a耦合到PPE104a-104k,第一级单元214b耦合到PPE104k+1-104n,并且第一级单元214c耦合到104n+1-104x。类似地,在实施例中,每个第二级单元216耦合到加速器引擎106的相应子集。在图示的实施例中,第二级单元216a耦合到加速器引擎106a、106b和106c,并且第二级单元216b耦合到加速器引擎106d和106e。在实施例中,每个加速器引擎106被配置为执行一个或几个处理操作类型,并且多个加速器引擎106可以被配置为执行相同处理操作类型。在图2中,每个加速器引擎106包括一个或几个虚拟引擎(VE)222。加速器引擎106内的虚拟引擎(VE)表示加速器引擎106被配置为执行的处理操作类型。在图示的实施例中,加速器引擎106a、106b和106e中的每个加速器引擎包括VEi222-1的相应实例。加速器引擎106c和106e中的每个加速器引擎包括VEx222-2的相应实例和VEk222-3的相应实例。加速器引擎106e附加地包括VEm222-4的实例。利用相同下标标记的VE表示相同的处理操作,并且利用相同下标标记的每个VE在本文中指代VE的实例。作为仅仅示例,VEi222-1的实例(即,VEi222-la、VEi222-lb和VEi222-lc)表示前向查找操作。例如,在该实施例中,VEi222-1的每个实例包括到存储器(未示出)中的前向表的接口并且被配置为访问前向表以获得针对分组的信息,例如分组应当被设置以向其传送的端口112。类似地,在实施例中,VEx222-2的实例(即,VEx222-2a和VEi222-2b)表示例如策略控制查找操作。在该实施例中,VEx222-2的每个实例包括到存储器(未示出)中的策略控制表的接口,并且被配置为访问策略控制表以确定应当关于分组进行的动作。
在操作时,第一级单元214(例如,第一级单元214a)从PPE104(例如,PPE104a)接收指定处理操作的请求并且选择通过互联网络200的路径,经由该路径将请求发送到被配置为执行指定处理操作的加速器引擎106。因为多个加速器引擎106可以被配置为执行相同的指定处理操作,通过互联网络200的多个候选路径可以可用于到达被配置为执行处理操作的特定加速器引擎106。作为示例,如果指定处理操作与由VEi222-1表示的处理操作相对应,则存在可以经由其路由请求213的通过互联网络200的三个候选路径:经由第二级单元216a导向VEi222-la的第一路径,经由第二级单元216a导向VEi222-lb的第二路径,以及经由第二级单元216b导向VEi222-lc的第三路径。第一级单元214a在第一路径、第二路径和第三路径之中选择路径。
在实施例中,第一级单元214基于以下中的一个或多个来选择多个候选路径中的要经由其路由接收到的请求的特定路径:(i)第一级单元214先前发送到候选路径中的每个候选路径的数据量(例如,请求的数量),(ii)第一级单元214从第二级单元216接收到的FC信息,以及(iii)被配置为执行处理操作的每个加速器引擎106的带宽。在实施例中,第一级单元214选择导向满足下式的实例VEi的路径:
其中l/wi是实例VEi的带宽,fc(i)是对应于实例VEi的流量控制状态,wfc是将第一级单元214连接到耦合到输入量VEi的第二级单元216的链路的流量控制状态,Cnti(VE)是由第一级单元214先前经由路径发送到实例VEi的数据量。
在实施例中,在选择了路径后,第一级单元214将路径与请求相关联并且将请求发送到包含在该路径中的第二级单元216。在实施例中,第二级单元216从第一级单元214接收请求并将该请求转发到被配置为执行指定处理操作的所选择的加速器引擎106。
在实施例中,用于将请求路由通过互联网络200的每个候选路径在每级中包括仅仅一个互联单元。例如,在实施例中,仅仅一个第一级单元214和仅仅一个第二级单元216被包含在每个候选路径中。在实施例中,第一级单元214做出路径选择决策以选择要经由其路由请求的路径,而不需要与其他第一级单元214通信。例如,在实施例中,第一级单元214不从其他第一级单元214接收指示特定VE实例可能由于由其他第一级单元214做出的路径选择而经历的负载的信息。然而,在实施例中,第一级单元214至少部分基于由VE实例由于由每个第一级单元214做出的路径选择而经历的总负载来做出路径选择决策。在实施例中,第一级单元214至少部分基于第一级单元214从第二级单元216接收到的流量控制信息来做出路径选择决策。第一级单元214从第二级单元216接收到的流量控制信息包括指示由耦合到第二级单元216的VE实例经历的负载的信息。附加地或备选地,第一级单元214从第二级单元216接收到的流量控制信息包括指示在第一级单元214与第二级单元216之间的链路上的拥塞的信息。
在实施例中,第一级单元利用流量控制信息来调节路径选择决策过程。例如,在实施例中,如果第一级单元214从第二级单元216接收到的流量控制信息指示耦合到第二级单元216的特定VE实例经历高水平的负载,则第一级单元214减少第一级单元214发送到特定VE实例的请求的数量,或者在做出路径决策时从考虑中暂时地消除导向特定VE实例的路径。类似地,在实施例中,如果第一级单元214从第二级单元216接收到的流量控制信息指示在第一级单元214与第二级单元216之间的特定链路严重拥塞,则第一级单元214减少经由包括特定链路的路径发送的请求的数量,或者在做出路径决策时从考虑中暂时地消除包括特定链路的路径。
在一些实施例中,第一级单元214还被配置为将流量控制传播到耦合到第一级单元214的PPE104。例如,如果互联单元214基于第一级单元214从第二级单元216接收到的流量控制信息确定特定VE的所有实例被阻塞,则第一级单元214将向PPE104指示PPE104应当暂时地停止发送指定由VE表示的特定处理操作的请求的流量控制信息发送到耦合到第一级单元214的PPE104。下面参考图3和图4描述由互联网络200的第一级单元214和第二级单元216采用的这些和其他流量控制机制。
图3是根据实施例的适合于用作图2的任何第一级单元214或图1的任何第一级单元122的第一级单元300的框图。出于说明性目的,下面结合图2描述示例第一级单元300。然而,在其他实施例中,第一级单元300被利用在除了图2的互联网络200以外的互联网络中。类似地,在一些实施例中,图2的互联网络200包括与第一级单元300不同的第一级单元。
在实施例中,第一级单元300被配置为从PPE104接收请求并且被配置为确定通过互联网络200的路径,这些请求应当经由这些路径被路由到被配置为执行由这些请求指定的处理操作的恰当的加速器引擎106。在实施例中,第一级单元300被配置为之后经由所选择的通过互联网络200的路径来定向这些请求。在实施例中,为了选择针对处理请求的路径,第一级单元300首先针对VE实例222的组选择被配置为执行由请求指定的处理操作的VE实例222。在实施例中,第一级单元300之后通过选择导向包括所选择的VE实例222的加速器引擎106的路径来选择要经由其路由请求的路径。
在图3中示出的实施例中,第一级单元300包括耦合到请求处理器304的多个输入队列302,请求处理器304继而耦合到选择器306。在实施例中,输入队列302对应于在第一级单元300与PPE104(或PPE104的集群)之间的相应链路,并且队列302中的每个队列被配置为存储经由在第一级单元300与PPE104之间的链路从特定PPE104接收到的请求。在实施例中,请求处理器304被配置为检索来自输入队列302的请求并且被配置为将请求定向到被配置为执行由请求指定的处理操作的恰当的加速引擎106。
在操作时,请求处理器304检索来自输入队列302的请求并且例如基于包含在请求中的指示来确定由请求指定的处理操作。请求处理器304之后将指定处理操作类型的指示提供给选择器306。选择器306接收指定处理类型的指示,并且从VE实例222的组中选择被配置为执行这种类型的处理操作的VE实例222。在实施例中,选择器306包括或耦合到查找表(LUT)312。在实施例中,LUT312存储在处理操作与被配置为执行处理操作的VE实例222之间的关联。在实施例中,当路径选择器306从请求处理器304接收到处理操作类型的指示时,路径选择器306使用处理操作的指示作为LUT310的索引来访问LUT310并且从LUT310中检索用于执行处理操作的候选VE实例222的列表。
选择器306耦合到FC单元312。在实施例中,FC单元312实现第一级单元300内的流量控制,并且还将流量控制传播到耦合到第一级单元300的PPE104。在实施例中,FC单元312生成对应于VE实例222的相应权重并且将权重提供给选择器306。选择器306之后基于VE实例的权重来选择向其路由请求的特定VE实例。在实施例中,FC单元312至少部分基于针对其的VE实例由路径选择器306选择的请求的数量来生成权重。为此,在实施例中,FC单元312包括多个计数器314,每个计数器314对应于特定VE实例222。当选择器306做出针对请求的VE实例选择时,选择器306将所选择的VE实例222的指示提供给FC单元312。在实施例中,FC单元312更新(例如,增加)对应于VE实例222的计数器314以说明针对其的VE实例222由选择器306选择的请求的数量。随后,在实施例中,当将请求从第一级单元300发送到耦合到所选择的VE实例222的第二级单元216时,FC单元312减少对应于VE实例222的计数器314。
在实施例中,FC单元312被配置为从第二级单元216接收上行链路流量控制(ULFC)信息315,并且被配置为进一步基于ULFC信息315来生成权重。ULFC信息315包括VE实例流量控制信息和链路流量控制信息。在实施例中,对应于VE实例222的VE实例流量控制信息指示由VE实例222由于由所有第一级单元214发送到VE实例的请求经历的总负载。在实施例中,对应于VE实例222的VE实例流量控制信息指示VE实例222的四个可能的负载状态中的一个,包括“开启”状态、“轻载”状态、“重载”状态以及“阻塞”状态。在实施例中,对应于VE实例222的链路流量控制信息指示在第一级单元300与耦合到VE实例222的第二级单元216之间的链路上的拥塞的水平。例如,链路流量控制信息基于第二级单元216中的耦合到第一级单元300与耦合到VE实例222的第二级单元216之间的链路的输入队列的填充水平来指示链路上的拥塞的水平。在实施例中,类似于VE实例FC信息,链路FC信息指示几个可能的拥塞状态中的一个,例如包括“开启”状态、“轻拥塞”状态、“重拥塞”状态以及“阻塞”状态。在其他实施例中,利用其他适当数量的状态和/或其他适当的状态。例如,在一些实施例中,链路FC信息指示少于四个状态或大于四个状态的适当数量的状态的特定状态。
在实施例中,FC单元312基于以下中的一个或多个来确定针对VE实例的权重:(i)选择器306先前已经选择针对其的VE实例的请求的数量,(ii)如由包含在ULFC信息315中的VE实例状态信息指示的VE实例的流量控制状态,(iii)如由包含在ULFC信息315中的链路FC信息指示的在第一级单元300与耦合到VE实例的第二级单元216之间的链路的链路流量控制状态,以及(iv)VE实例的带宽。在实施例中,VE实例的负载越高,则在单元300与耦合到VE实例的第二级单元之间的链路的拥塞越高,和/或导向由路径选择器304针对VE实例确定的更高权重的VE实例的带宽越低。相反地,VE实例的负载越低,则在单元300与耦合到VE实例的第二级单元之间的链路的拥塞越低,和/或导向由路径选择器304针对VE实例确定的更低权重的VE实例的带宽越高。
在实施例中,当ULFC信息指示一个或多个VE实例222和/或在第一级单元300与耦合到VE实例222的第二级单元216之间的相应链路中的一个或多个处于锁定状态时,则FC单元312从考虑中消除这些VE实例222。FC单元312之后生成针对剩余的VE实例222的相应权重,并且将剩余的VE实例222的权重提供给选择器306。在实施例中,选择器306之后基于权重从剩余的VE实例222的候选VE实例来选择VE实例222。例如,选择器306选择具有“最好”(例如,在实施例中,最低)权重的候选VE实例。在实施例中,如果候选VE实例中的多个候选VE实例具有最好权重,则选择器306应用用于从具有最好权重的多个候选VE实例选择特定VE实例的适当的选择算法。例如,路径选择器304随机地从具有最好权重的候选VE实例中的多个候选VE实例中选择VE实例。
在选择了对应于请求的VE实例222之后,选择器306将所选择的VE实例的指示提供给请求处理器304。请求处理器304将该请求与所选择的VE实例相关联,并且将该请求定向到所选择的VE实例以用于执行由该请求所请求的处理操作。在实施例中,为了将所选择的VE实例与该请求相关联,请求处理器304生成针对该请求的结构报头(fabricheader),并且将所选择的VE实例的指示包含在结构报头中。例如,请求处理器304将VE实例指示包含在结构报头的“目标VE”字段中。在实施例中,为了将该请求转发到所选择的VE实例,请求处理器304将所选择的VE实例映射到耦合到包括所选择的VE实例的耦合到加速器引擎106的第二级单元214的第一级单元300的输出端口。之后,请求处理器304将请求和针对请求生成的结构报头发送到输出端口以用于将请求和针对请求生成的结构报头发送到第二级单元216。
在一些实施例和/或情景中,请求处理器304在将请求转发到针对请求选择的VE实例222之前对请求中的至少一些请求(例如,相对较长的请求)进行分段。在这样的实施例和/或情景中,请求处理器304生成针对请求的每个片段的相应结构报头,并且将每个片段连同针对该片段生成的结构报头发送到输出端口以用于将片段和针对片段生成的结构报头发送到包括针对请求选择的VE实例的耦合到加速器引擎106的第二级单元216。
在实施例中,FC单元312还被配置为生成要被发送到PPE104的下行链路(DL)FC信息316。DLFC信息316包括加速器引擎状态信息和链路状态信息。加速器引擎状态信息指示被配置为执行特定处理操作的VE实例222的总负载。例如,在实施例中,当如由DLFC信息316所指示的被配置为执行特定处理操作的所有VE实例处于阻塞状态时,则加速器引擎状态信息指示被配置为执行处理操作的加速器引擎106当前不可用于执行处理操作。
链路状态FC信息指示在第一状态单元300与PPE104之间的相应链路上的链路拥塞。在实施例中,链路上的拥塞通过耦合到链路的输入队列302的填充水平来测量。在实施例中,FC单元312被配置为监控输入队列302的填充水平。例如,FC单元312被配置为获得输入队列302的填充水平并且将该填充水平与高填充水平阈值进行比较。当输入队列302的填充水平超过高填充水平阈值时,FC单元312生成DLFC信息316以指示输入队列302的高输入队列填充水平。随后,当输入队列302的填充水平下降(例如,下降到高填充阈值以下或诸如低填充阈值的另一阈值以下)时,FC单元312生成FC信息以指示队列302的填充水平的下降。
在实施例中,第一级单元300将由FC单元312生成的DLFC信息316发送到耦合到第一级单元300的PPE104。例如,在实施例中,第一级单元300生成包括DLFC信息316的FC消息,并且将该FC消息广播到PPE104。在实施例中,第一级单元300定期地基于最当前的FC信息316来生成FC消息,并且定期地将该FC消息广播到PPE104。响应于从第一级单元300接收到FC信息316,PPE104调节到第一级单元300的请求的发送。在实施例中,例如,当FC信息316包括加速器引擎106暂时不可用于执行特定处理操作的指示时,PPE104暂时地停止将请求特定处理操作的请求发送到第一级单元300。随后,当FC信息316指示加速器引擎106再次可用于执行特定处理操作时,PPE104重新开始将针对特定处理操作的请求发送到第一级单元300。类似地,在实施例中,响应于接收到指示在第一级单元300与特定PPE104之间的链路阻塞或高度拥塞的链路FC信息,特定PPE104暂时地停止将请求发送到第一级单元300,或者减少到第一级单元300的请求的发送的速率。因此,在实施例中,当链路状态信息指示链路上的拥塞已经下降时,PPE104重新开始经由链路将请求发送到第一级单元300,或者增加经由链路将请求发送到第一级单元300的速率。
图4是根据实施例的适合于用作图2的每个第二级单元216或图1的每个第二级单元124的第二级单元400的框图。出于说明性目的,下面结合图2描述示例第二级单元400。然而,在其他实施例中,第二级单元400被利用在除了图2的互联网络200以外的互联网络中。类似地,在一些实施例中,图2的互联网络200包括与第二级单元400不同的以适当的方式配置的第二级单元。
第二级单元400包括耦合到请求处理器404的多个输入队列402。在实施例中,队列402对应于在第二级单元400与第一级单元214之间的相应链路,并且队列402中的每个队列被配置为存储经由在第二级单元400与第一级单元214之间的链路从特定第一级单元214接收到的请求。在实施例中,请求处理器404被配置为检索来自队列402的请求并且被配置为调度到加速器引擎106的请求的传送。
在实施例中,请求处理器404被配置为检索来自队列402的请求并且被配置为例如基于包含在请求中的结构报头中的目标VE指示来确定请求的目标VE实例222。请求处理器404之后将目标VE实例的指示提供给调度器406。在实施例中,调度器406调度包含目标VE的到加速器引擎106的请求的发送。请求处理器402之后将加速器引擎106映射到耦合到加速器引擎106的第二级单元400的输出端口,并且将请求发送到输出端口以用于随后将该请求传送到加速器引擎106。在实施例中,在将请求发送到目标VE之前,请求处理器404基于请求的结构报头中的指示来确定请求是否对应于从第一级单元214作为多个片段发送的经分段的请求,或者从第一级单元214作为单个片段发送的单个片段请求。在实施例中,如果请求处理器404确定请求对应于经分段的请求,则调度器404重组来自对应于请求的多个片段的请求,并且之后在实施例中,将所重组的请求发送到包括目标VE的加速器引擎106。在另一实施例中,调度器404不重组来自多个段的请求,而是将请求作为多个段发送。在实施例中,还在发送请求之前,请求处理器404从请求中移除结构报头。
在实施例中,调度器406耦合到FC单元408。FC单元408被配置为从耦合到第二级单元400的加速器引擎106接收ULFC信息409。在实施例中,ULFC信息包括指示在第二级单元400与加速器引擎106之间的相应链路上的拥塞的链路状态信息。例如,包含在ULFC信息409中的链路状态信息指示加速器引擎106的输入队列的填充水平。在实施例中,链路状态信息指示几个可能的拥塞状态中的一个,在实施例中包括例如“开启”状态、“轻拥塞”状态、“重拥塞”状态以及“阻塞”状态。在其他实施例中,利用其他适当数量的状态和/或其他适当的状态。例如,在一些实施例中,链路FC信息指示少于四个状态或大于四个状态的适当数量的状态的特定状态。FC单元408被配置为将链路状态信息提供给调度器406。在实施例中,调度器406被配置为基于从FC单元408接收到的链路状态信息来调节对请求到加速器引擎106的发送的调度。例如,在实施例中,当链路状态信息指示链路处于严重拥塞状态中或处于阻塞状态中时,调度器406减少调度到耦合到链路的加速器引擎106的请求的速率,或者暂时地停止调度到耦合到链路的加速器引擎106的请求。在实施例中,例如由于在第二级单元400与加速器引擎106之间的严重拥塞或阻塞链路而不能够被调度用于发送到加速器106的请求被存储在第二级单元400中的缓冲(未示出)中。随后,在实施例中,当从加速器引擎106接收到的链路状态信息指示链路的状态的变化(例如,变化为“开启”状态或“轻度拥塞”状态)时,则调度器406开始调度所缓冲的请求以被发送到加速器引擎106。
在实施例中,FC单元408还被配置为生成要被发送到第一级单元214的DLFC信息410。在实施例中,DLFC信息410对应于图3的ULFC信息315。在实施例中,DLFC信息410包括VE实例状态信息和链路状态信息。在实施例中,包含在DLFC状态信息410中的VE实例状态信息指示耦合到第二级单元400的VE实例222的负载。例如,在实施例中,对应于VE实例的VE实例状态信息基于第二单元400已经发送到VE实例的请求的数量。例如,FC单元408被配置为对调度器406针对每个VE实例调度的请求的数量进行计数,并且被配置为基于针对每个VE实例调度的请求的数量来生成VE实例状态信息。为了该目的,在实施例中,FC单元408包括多个计数器412,每个计数器410对应于特定VE实例222。每当调度器406调度用于发送到VE实例222的请求时,FC单元408增加对应于VE实例222的计数器410。随后,在实施例中,当将请求从第二级单元400发送到包括VE实例222的加速器引擎106时,FC单元408减少对应于VE实例222的计数器410。在实施例中,FC单元408基于计数器412的值来生成VE实例FC状态信息。例如,基于计数器412的值,FC单元408生成在该示例中指示耦合到第二级单元400的VE实例222中的每个VE实例的四个状态中的一个的VE实例FC信息,四个状态包括“开启”状态、“轻载”状态、“重载”状态以及“关闭”状态。
包含在DLFC信息410中的链路状态FC信息指示在第二级单元400与第一级单元214之间的相应链路上的链路拥塞。在实施例中,在第二级单元400与第一级单元214之间的链路上的拥塞通过耦合到该链路的输入队列402的填充水平来测量。在实施例中,FC单元408被配置为监控输入队列402的填充水平。例如,FC单元408被配置为获得输入队列402的填充水平并且将该填充水平与高填充阈值进行比较。当输入队列402的填充水平超过高填充阈值时,FC单元408生成FC信息以指示输入队列402的高输入队列填充水平。随后,在实施例中,当输入队列402的填充水平下降(例如,下降到填充阈值以下或诸如低填充阈值的另一阈值以下)时,FC单元408生成FC信息以指示队列302的填充水平的下降。
在实施例中,第二级单元400将DLFC信息410发送到第一级单元214。在实施例中,第一级单元214使用DLFC信息410来调节针对第一级单元214随后从PPE104接收到的请求的VE实例的选择,如以上参考图3更详细讨论的。
图5是根据另一实施例的适合于用作图1的互联网络108的互联网络500的框图。互联网络500类似于图2的互联网络200,除了与图2的互联网络200中包括的两个互联级相比较,互联网络500包括三个互联级。具体地,互联网络500包括包含一个或多个第一级单元512的第一互联级510、包含一个或多个第二级单元516的第二互联级514以及包含一个或多个第三级单元520的第三互联级518。在实施例中,第一互联单元510为互联网络500的入口互联级。第一级单元510耦合到PPE104并且耦合到第二级单元516。第一级单元512被配置为接收来自PPE104的请求并且被配置为将这些请求转发到第二级单元516。第二互联单元514为互联网络500的中间互联级。第二级单元516耦合到第一级单元512并且耦合到第三级单元520。第二级单元514被配置为接收来自第一级单元512的请求并且被配置为将这些请求转发到第三级单元520。第三互联单元518为互联网络500的出口互联级。第三级单元520耦合到第二级单元516并且耦合到加速器引擎106。第三级单元520被配置为接收来自第二级单元516的请求并且被配置为将这些请求转发到加速器引擎106。
在实施例中,每个第一级单元512被配置为在尝试将这些请求均匀地分布在第二级单元516之中时选择要向其发送这些请求的第二级单元。例如,第一级单元512基于第一级单元512与第二级单元516之间的相应链路的链路状态来选择要将请求转发到其的第二级单元216。在实施例中,链路的链路状态反映第一级单元512先前已经发送到耦合到该链路的第二级单元516的数据量(例如,请求的数量和/或每个请求的长度)。第一级单元512被配置为针对每个请求选择与先前经由链路发送的如由链路的链路状态指示的最少数据量相关联的链路。在实施例中,第一级单元512被配置为之后经由所选择的链路发送这些请求,并且利用经由链路发送的请求的长度来更新所选择的链路的链路状态。
第二级单元516被配置为接收用于在一组候选加速器引擎106之中选择被配置为执行由请求所请求的处理操作的加速器引擎106的请求。在实施例中,第二互联级514的第二级单元516类似于互联网络200的第一级单元214。在实施例中,每个第二级单元516与图3的第一级单元300相同或类似。第三级单元520被配置为接收来自第二级单元520的请求并且被配置为调度用于发送到由第二级单元520选择的加速器引擎106的请求。在实施例中,第三级单元512与图2的第二级单元216相同或类似。在实施例中,每个第三级单元520与图4的第二级单元400相同或类似。
参考图2和图5,在至少一些实施例中,互联网络200和互联网络500可容易扩展以支持更高数量的PPE104,而不增加通过互联网络200(或互联网络500)的延时。例如,在实施例中,互联网络200通过将第一级单元214中的每个第一级单元的功能扩展为接受来自PPE104的更大子集的请求而被扩展以支持更高数量的PPE104。备选地,在另一实施例中,第一级单元的数量被增加以支持附加PPE104,同时第一级单元214中的每个第一级单元的功能保持不变。在这种情况下,在实施例中,每个第二级单元216的功能被扩展以支持附加第一级单元214。作为另一备选,在其他实施例中,互联网络200的数量(或互联网络500的数量)被增加以支持附加PPE104。在这样的实施例中,加速器引擎106一般包括被配置为执行每个处理操作类型的至少两个VE实例使得至少一个VE实例可用于多个互联网络200中的每个互联网络(多个互联网络500中的每个互联网络)。在一个这样的实施例中,被配置为执行特定处理操作类型的VE实例222被对称地分布在多个互联网络200(或互联网络500)之中。
图6是根据实施例的具有单独的前向路径和反向路径多级互联网络的示例网络设备600的框图。网络设备600大体上类似于网络设备100并且包括网络设备100的类似编号的元件,出于简洁性原因不对其进行讨论。在网络设备600中,(以上参考图1描述的)互联网络108被配置为提供用于将请求从PPE104路由到加速器引擎106的转发路径。另外,网络设备600包括互联网络109,互联网络109被配置为提供用于将包括所请求的处理操作的结果的响应从加速器引擎106路由到PPE104的反向路径。然而,要指出在一些实施例中,互联网络108被配置为提供从PPE104路由到加速器引擎16的转发路径和从加速器引擎106到PPE104的返回路径两者。在这样的实施例中,例如下面所描述的互联网络109的功能被包含在互联网络108中。
在实施例中,互联网络109大体上与互联网络108相同或相似。例如,在实施例中,互联网络包括与互联网络108相同数量的级。然而,在实施例中,互联网络109的级相对于互联网络108的级被反向。在图示的实施例中,互联网络109包括多个第一级单元142的第一级或入口级140和包括多个第二级单元146的第二级或出口级144。互联网络109的第一级140大体上对应于互联网络108的第二级124。在实施例中,互联网络109的第一级140包括与互联网络108的第二级128的第二级单元124的数量相同的数量的第一级单元142。在实施例中,互联网络109的第一级单元140耦合到与互联网络108的对应第二级单元128相同的加速器引擎106的相应子集。在实施例中,互联网络109的第二级144大体上对应于互联网络108的第一级222。在实施例中,互联网络109的第二级144包括与互联网络108的第一级单元126的数量相同的数量的第二级单元146。在实施例中,互联网络109的第二级单元146耦合到与互联网络108的对应第一级单元126相同的PPE104的相应子集。另外,在实施例中,类似于互联网络108,互联网络109的特定级的互联单元不耦合到互联网络109的特定级的其他互联单元和/或被配置为将处理操作结果路由到互联网络109的特定级的其他互联单元。
一般而言,在实施例中,互联网络109将包括所请求的处理操作的结果的响应从执行处理操作的加速器引擎106路由到请求处理操作的PPE104。在实施例中,互联网络109经由与转发路径相对应的反向路径来路由包括处理操作的结果的响应,经由转发路径请求处理操作的请求贯穿互联网络108以到达执行处理操作的加速器引擎106。
在实施例中,当互联网络109接收到包括处理操作的结果的响应时,互联网络109确定经由其将响应路由到请求处理操作的PPE104的路径。在实施例中,因为响应被路由到请求处理操作的特定PPE104,所以在至少两级互联网络的情况下,仅仅一个路径可用于将响应路由通过互联网络109以到达特定PPE104。在操作时,根据实施例,第一级单元142接收包括处理操作的结果的响应。在实施例中,响应在响应的结构报头中包括例如请求处理操作的PPE104的指示。第一级单元142确定哪个第二级单元144耦合到请求处理操作的所指示的PPE104。第一级单元之后以一个或多个片段将响应发送到所确定的第二级单元144。第二级单元144接收响应,并且在响应以多个片段被发送到第二级单元144时,将结果重组成单个片段。在实施例中,第二级单元144之后将响应发送到在响应的结构报头中指示的PPE104。在实施例中,在发送响应之前,第二级单元144从响应中移除结构报头。
在实施例中,互联网络109实现与由互联网络108实现的流量控制相似的流量控制。在实施例中,互联网络109中的FC信息在与通过互联网络109的数据流(例如,响应流)的方向(在图6中由箭头152所指示)相反的方向(在图6中由箭头150所指示)上流动。在实施例中,FC信息包括链路状态信息,其指示在PPE104与第二级单元146之间的链路、在第二级单元146与第一级单元142之间的链路和在第一级单元142与加速器引擎106之间的链路上的拥塞,链路状态信息被传播通过互联网络109。在实施例中,链路上的拥塞通过耦合到链路的输入队列的填充水平来测量。例如,在实施例中,当耦合到链路的输入队列的填充水平超过阈值时,对应于该链路的FC信息指示严重拥塞的链路状态或阻塞的链路状态。在实施例中,第一级单元142和第二级单元146使用FC信息来调节经由链路对响应的传送。例如,在实施例中,当特定链路严重拥塞时,经由该链路对响应的传送的速率被减少。作为另一示例,当FC信息指示特定链路被阻塞时,将响应缓冲在否则将经由链路来发送响应的第一级单元142或第二级单元146中。随后,在实施例中,当对应于链路的FC信息指示链路的状态的变化时,所缓冲的响应经由链路来发送。
图7是根据实施例的用于通过多级互联网络路由请求的示例方法700的流程图。在实施例中,方法700由图1的网络设备100来实现,并且出于说明性目的参考图1描述方法700。然而,在其他实施例中,方法700由另一适当的网络设备来实现。
在框702处,分组处理元件104接收要由分组处理元件104处理的分组。在框704处,分组处理元件生成指定要由加速器引擎106关于分组执行的处理操作的请求,并且在框706处,分组处理元件将请求发送到互联网络108。更具体地,在实施例中,在框706处,分组处理元件104将请求发送到互联网络108的特定第一级单元126。
在框708处,互联网络108在通过互联网络108的多个候选路径之中确定通过互联网络108的路径,经由该路径将请求路径到被配置为执行指定处理操作的加速器引擎106。在实施例中,多个候选路径中的路径不包括互联网络108的同一级内的多个互联单元。在实施例中,在框706处要向其发送响应的特定第一级单元126确定经由其将请求路由通过网络108的路径。例如,第一级单元126在加速器引擎106之中选择被配置为执行指定处理操作的特定加速器引擎106,并且选择导向所选择的特定加速器引擎106的路径。在实施例中,第一级单元126选择特定加速器引擎106而不需要与其他第一级单元126通信。在实施例中,第一级单元126至少部分基于第一级单元126先前已经发送到被配置为执行处理操作的相应候选加速器引擎106的多个请求来选择特定加速器106。在实施例中,第一级单元126还基于第一级单元128从相应第二级单元128接收到的流量控制信息来选择特定加速器引擎。
在框710处,互联网络108经由在框708处确定的所确定的路径来将请求路由到被配置为执行处理操作的特定加速器引擎106。在框712处,特定加速器引擎106执行处理操作。
以上描述的各个框、操作和技术中的至少一些可以利用硬件、运行固件指令的处理器、运行软件指令的处理器或其任何组合来实现。当利用运行软件或固件指令的处理器来实现时,软件或固件指令可以被存储在诸如磁盘、光盘、RAM或ROM或闪存、等等的任何计算机可读媒介或介质中。软件或固件指令可以包括当由处理器运行时适当处理器执行各个动作的机器可读指令。
当以硬件来实现时,硬件可以包括以下中的一个或多个:分立部件、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、等等。
尽管已经参考具体事例描述了本发明,但是这些具体示例旨在仅仅为对本发明的说明性的而非对本发明的限制,对于本领域普通技术人员将显而易见的是,可以在不背离本发明的精神和范围的情况下对所公开的实施例进行改变、添加和/或删除。

Claims (20)

1.一种方法,包括:
在网络设备的多个相似的分组处理元件之中的分组处理元件处接收分组;
由所述分组处理元件生成指定要由加速器引擎关于所述分组执行的处理操作的请求,所述加速器引擎在功能上与所述多个相似的分组处理元件不同;
将来自所述分组处理元件的所述请求发送到互联网络,所述互联网络包括分级布置的多个互联单元;
确定通过所述互联网络的路径,其中所述路径是在多个候选路径之中选择的,其中所述候选路径中的路径不包括所述互联网络的同一级内的多个互联单元;
经由所确定的路径将所述请求发送到多个候选加速器引擎之中的被配置为执行所述处理操作的特定加速器引擎;以及
由所述特定加速器引擎执行所述处理操作。
2.根据权利要求1所述的方法,其中:
将所述请求发送到所述互联网络包括将所述请求发送到所述多个互联单元的第一互联单元,其中所述第一互联单元处于所述互联网络的第一级中,并且
确定通过所述互联网络的所述路径包括由所述第一互联单元选择所述特定加速器引擎,其中所述特定加速器引擎被耦合到所述互联网络的第二级中的互联单元。
3.根据权利要求1所述的方法,其中选择所述特定加速器引擎包括在不与所述第一级中的所述其他互联单元通信的情况下选择所述特定加速器引擎。
4.根据权利要求2所述的方法,其中选择所述特定加速器引擎包括至少部分基于先前由所述第一互联单元发送到所述候选加速器引擎的相应加速器引擎的多个请求来选择所述特定加速器引擎。
5.根据权利要求4所述的方法,还包括:
在相应第二互联单元处,第二互联单元在所述互联网络的所述第二级中,生成指示以下中的一个或多个的流量控制信息:(i)耦合到所述相应第二互联单元的一个或多个候选加速器引擎的相应负载以及(ii)所述第一互联单元与所述第二互联单元之间的相应链路上的拥塞;
将来自所述第二互联单元的所述流量控制信息发送到所述第一互联单元;
在所述第一互联单元处接收所述流量控制信息;以及
进一步基于接收到的流量控制信息来在所述第一互联单元处选择所述特定加速器引擎。
6.根据权利要求5所述的方法,其中生成指示耦合到所述相应第二互联单元的一个或多个候选加速器引擎的相应负载的所述流量控制信息包括基于由所述互联网络的所述第一级中的互联单元发送到所述相应候选加速器引擎的请求的相应数量来生成所述流量控制信息。
7.根据权利要求5所述的方法,其中生成指示所述第一互联单元与所述相应第二互联单元之间的相应链路上的拥塞的流量控制信息包括基于所述第二互联单元的输入队列的相应填充水平来生成所述流量控制信息,所述输入队列耦合到所述第一互联单元与所述第二互联单元之间的所述相应链路。
8.根据权利要求5所述的方法,其中:
对应于候选加速器引擎的所述流量控制信息指示包括以下的四个状态中的一个状态:(i)开启状态(ii)轻负载状态(iii)重负载状态以及(iv)阻塞状态,并且
选择所述特定加速器引擎包括在对应于候选加速器引擎的所述流量控制信息指示所述候选加速器引擎处于所述阻塞状态时从考虑中消除所述候选加速器引擎。
9.根据权利要求7所述的方法,其中:
对应于所述链路的所述流量控制信息指示所述链路的包括以下中的一个或多个状态:(i)开启状态(ii)轻拥塞状态(iii)重拥塞状态以及(iv)阻塞状态,并且
选择所述特定加速器引擎包括在所述流量控制信息指示所述第一互联单元与所述第二互联单元之间的所述链路处于所述阻塞状态时从考虑中消除耦合到所述第二互联单元的一个或多个候选加速器引擎。
10.根据权利要求5所述的方法,其中所述流量控制信息为第一流量控制信息,所述方法还包括:
在所述第一互联单元处基于第一流量控制信息来生成第二流量控制信息,其中所述第二流量控制信息指示所述候选加速器引擎的总负载;
将来自所述第一互联单元的所述第二流量控制信息发送到耦合到所述第一互联单元的分组处理元件;
由耦合到所述第一互联单元的所述分组处理元件接收所述第二流量控制信息;以及
基于所述第二流量控制信息来调节由所述分组处理元件对所述第一互联单元的请求的传送。
11.一种网络设备,包括:
多个分组处理元件,其被配置为处理从网络接收到的分组,所述分组处理单元被配置为选择性地接合用于执行关于所述分组的某些处理操作的加速器引擎;
多个加速器引擎,其被配置为执行不由所述分组处理元件执行的某些处理操作,其中两个或更多个加速器引擎被配置为执行相同类型的处理操作;以及
多级互联网络,其被配置为将来自所述分组处理元件的请求路由到外部处理引擎,所述多级互联网络包括至少两个互联级,所述互联级分别包括多个互联单元,其中给定级的所述互联单元被配置为将所述请求路由到相邻级的所述互联单元并且不将所述请求路由到所述给定级的所述互联单元。
12.根据权利要求11所述的装置,其中所述分组处理元件中的至少一些分组处理元件中的每个分组处理元件被配置为使用存储在非瞬态存储器中的计算机可读指令来执行用于完成分组的处理。
13.根据权利要求11所述的装置,其中所述加速器引擎被配置为执行的所述处理操作包括以下中的一个或多个:(i)前向查找操作(ii)策略控制查找操作以及(iii)循环冗余校验计算。
14.根据权利要求11所述的装置,其中所述第一级的相应互联单元被耦合到所述多个分组处理元件的分组处理元件的相应子集,所述第二级的相应互联单元被耦合到所述多个加速器引擎的加速器引擎的相应子集,并且所述第一级中的所述互联单元被耦合到所述第二级中的所述互联单元。
15.根据权利要求14所述的装置,其中所述第一级的第一互联单元被配置为:
从耦合到所述第一互联单元的分组处理元件接收指定特定处理操作的请求;
在被配置为执行所述特定处理操作的一组候选加速器引擎之中选择加速器引擎;并且
将所述请求发送到所述第二级中的第二互联单元,所述第二互联单元耦合到所选择的加速器引擎。
16.根据权利要求15所述的装置,其中所述第一互联单元被配置为在不与所述第一级中的其他互联单元通信的情况下选择所述特定加速器引擎。
17.根据权利要求15所述的装置,其中所述第一互联单元被配置为至少部分基于先前由所述第一互联单元发送到所述候选加速器引擎的相应加速器引擎的多个请求来选择所述特定加速器引擎。
18.根据权利要求15所述的装置,其中所述互联网络的所述第二级中的相应第二互联单元被配置为:生成指示以下中的一个或多个的流量控制信息:(i)耦合到所述相应第二互联单元的一个或多个候选加速器引擎的相应负载以及(ii)所述第一互联单元与所述第二互联单元之间的相应链路上的拥塞;并且
将来自所述第二互联单元的所述流量控制信息发送到所述第一互联单元。
19.根据权利要求18所述的装置,其中所述第一互联单元还被配置为:
接收来自所述相应第二互联单元的所述流量控制信息;并且
基于接收到的流量控制信息来选择所述特定加速器引擎。
20.根据权利要求19所述的装置,其中所述流量控制信息为第一流量控制信息,并且其中所述第一互联单元还被配置为:
基于所述第一流量控制信息来生成第二流量控制信息,其中所述第二流量控制信息指示所述候选加速器引擎的总负载;并且
将所述第二流量控制信息发送到耦合到所述第一互联单元的分组处理元件。
CN201480061408.8A 2013-09-10 2014-09-10 用于处理网络分组的方法和网络设备 Active CN105765928B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361875992P 2013-09-10 2013-09-10
US61/875,992 2013-09-10
US201361917206P 2013-12-17 2013-12-17
US61/917,206 2013-12-17
PCT/IB2014/002656 WO2015036870A2 (en) 2013-09-10 2014-09-10 Multi-stage interconnect network in a parallel processing network device

Publications (2)

Publication Number Publication Date
CN105765928A true CN105765928A (zh) 2016-07-13
CN105765928B CN105765928B (zh) 2019-02-15

Family

ID=52292966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480061408.8A Active CN105765928B (zh) 2013-09-10 2014-09-10 用于处理网络分组的方法和网络设备

Country Status (3)

Country Link
US (1) US9571380B2 (zh)
CN (1) CN105765928B (zh)
WO (1) WO2015036870A2 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012068171A1 (en) * 2010-11-15 2012-05-24 Reed Coke S Parallel information system utilizing flow control and virtual channels
US9455907B1 (en) 2012-11-29 2016-09-27 Marvell Israel (M.I.S.L) Ltd. Multithreaded parallel packet processing in network devices
US9479620B2 (en) 2013-10-17 2016-10-25 Marvell World Trade Ltd. Packet parsing and key generation in a network device
CN106537863B (zh) 2013-10-17 2019-11-26 马维尔国际贸易有限公司 用于并发地处理网络分组的方法和设备
US9886273B1 (en) 2014-08-28 2018-02-06 Marvell Israel (M.I.S.L.) Ltd. Maintaining packet order in a parallel processing network device
US10575319B2 (en) * 2016-04-15 2020-02-25 Nec Corporation Two-stage algorithm for uplink CoMP
US10225343B2 (en) 2016-05-10 2019-03-05 International Business Machines Corporation Object storage workflow optimization leveraging underlying hardware, operating system, and virtualization value adds
US10223172B2 (en) * 2016-05-10 2019-03-05 International Business Machines Corporation Object storage workflow optimization leveraging storage area network value adds
US10701002B1 (en) 2016-12-07 2020-06-30 Marvell International Ltd. System and method for memory deallocation
CN110214437B (zh) 2016-12-07 2023-04-14 马维尔亚洲私人有限公司 用于存储器访问令牌重新分配的系统和方法
CN110383777B (zh) 2017-03-28 2022-04-08 马维尔亚洲私人有限公司 端口扩展器设备的灵活处理器
WO2020026155A1 (en) 2018-07-30 2020-02-06 Marvell World Trade Ltd. Patent application
US11343358B2 (en) 2019-01-29 2022-05-24 Marvell Israel (M.I.S.L) Ltd. Flexible header alteration in network devices
US12058231B2 (en) 2019-12-13 2024-08-06 Marvell Israel (M.I.S.L) Ltd. Hybrid fixed/programmable header parser for network devices
US20230328032A1 (en) * 2022-04-06 2023-10-12 Mellanox Technologies, Ltd. Efficient and flexible flow inspector

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100293312A1 (en) * 2009-04-27 2010-11-18 Sonnier David P Network Communications Processor Architecture
EP2337274A1 (en) * 2009-12-17 2011-06-22 Alcatel Lucent Method for processing a plurality of data and switching device for switching communication packets
CN103004158A (zh) * 2011-01-06 2013-03-27 马维尔以色列(M.I.S.L)有限公司 具有可编程内核的网络设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI104672B (fi) 1997-07-14 2000-04-14 Nokia Networks Oy Kytkinjärjestely
GB2394095A (en) * 2001-05-31 2004-04-14 Espeed Inc Securities trading system with multiple levels-of-interest
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7177311B1 (en) 2002-06-04 2007-02-13 Fortinet, Inc. System and method for routing traffic through a virtual router-based network switch
US7924848B2 (en) * 2005-05-18 2011-04-12 International Business Machines Corporation Receive flow in a network acceleration architecture
US7924860B1 (en) 2008-12-23 2011-04-12 Juniper Networks, Inc. Maintaining data unit order in a network switching device
US9141831B2 (en) * 2010-07-08 2015-09-22 Texas Instruments Incorporated Scheduler, security context cache, packet processor, and authentication, encryption modules
US9164771B2 (en) * 2012-06-29 2015-10-20 Avaya Inc. Method for thread reduction in a multi-thread packet processor
US9424228B2 (en) * 2012-11-01 2016-08-23 Ezchip Technologies Ltd. High performance, scalable multi chip interconnect
US9553820B2 (en) 2012-12-17 2017-01-24 Marvell Israel (M.L.S.L) Ltd. Maintaining packet order in a parallel processing network device
WO2014096964A1 (en) 2012-12-17 2014-06-26 Marvell Israel (M.I.S.L. ) Ltd. Maintaining packet order in a parallel processing network device
CN104871145A (zh) 2012-12-20 2015-08-26 马维尔国际贸易有限公司 网络设备中的存储器共享
US9479620B2 (en) 2013-10-17 2016-10-25 Marvell World Trade Ltd. Packet parsing and key generation in a network device
CN106537863B (zh) 2013-10-17 2019-11-26 马维尔国际贸易有限公司 用于并发地处理网络分组的方法和设备
US9923813B2 (en) 2013-12-18 2018-03-20 Marvell World Trade Ltd. Increasing packet processing rate in a network device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100293312A1 (en) * 2009-04-27 2010-11-18 Sonnier David P Network Communications Processor Architecture
EP2337274A1 (en) * 2009-12-17 2011-06-22 Alcatel Lucent Method for processing a plurality of data and switching device for switching communication packets
CN103004158A (zh) * 2011-01-06 2013-03-27 马维尔以色列(M.I.S.L)有限公司 具有可编程内核的网络设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAODONG ZHANG等: "Performance Prediction and Evaluation of Parallel Processing on a NUMA Multiprocessor", 《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》 *

Also Published As

Publication number Publication date
WO2015036870A2 (en) 2015-03-19
US9571380B2 (en) 2017-02-14
US20150071079A1 (en) 2015-03-12
CN105765928B (zh) 2019-02-15
WO2015036870A3 (en) 2015-06-11

Similar Documents

Publication Publication Date Title
CN105765928A (zh) 并行处理网络设备中的多级互联网络
US20240259301A1 (en) Fat tree adaptive routing
CN102771094B (zh) 分布式路由架构
US9455918B1 (en) Dynamic load balancing switch architecture
US20050100035A1 (en) Adaptive source routing and packet processing
US8477627B2 (en) Content routing in digital communications networks
US9154425B2 (en) Method and apparatus for routing in a single tier switched network
US10305787B2 (en) Dropping cells of a same packet sent among multiple paths within a packet switching device
CN115865814A (zh) 用于基于周期的负载均衡的网络设备、系统和方法
Hassanpour et al. Proposing a dynamic routing approach to improve performance of Iran data network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200511

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200511

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200511

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.