CN105227485A - 基于流持续时间的用于网络中路径选择的方法和装置 - Google Patents
基于流持续时间的用于网络中路径选择的方法和装置 Download PDFInfo
- Publication number
- CN105227485A CN105227485A CN201510744550.9A CN201510744550A CN105227485A CN 105227485 A CN105227485 A CN 105227485A CN 201510744550 A CN201510744550 A CN 201510744550A CN 105227485 A CN105227485 A CN 105227485A
- Authority
- CN
- China
- Prior art keywords
- packet
- data
- flow
- hash table
- module
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6295—Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及基于流持续时间的用于网络中路径选择的方法和装置。在一些实施例中,一种装置包括一转发模块,其配置为接收一组第一数据包。该转发模块配置为响应于接收每个第一数据包修改一数据流值。该转发模块还配置为存储每个第一数据包到一第一输出队列中,基于被修改之后该数据流值没有经过数据流阈值。此外,该转发模块配置为接收一第二数据包。该转发模块配置为响应于接收该第二数据包修改该数据流值,以便该数据流值经过该数据流阈值。该转发模块配置为存储该第二数据包到一第二输出队列中,基于该数据流值已经过该数据流阈值。
Description
本申请是申请日为2012年3月9日、申请号为201210228495.4、发明名称为“基于流持续时间的用于网络中路径选择的方法和装置”的发明专利申请的分案申请。
技术领域
这里描述的一些实施例一般涉及数据中心的网络流量转发,并且尤其涉及用于基于数据中心的数据流持续时间将数据包归为队列类别的方法和装置。
背景技术
在一些实施例中,为单独的应用构建单独的网络来传送流量。例如,许多高性能的计算应用程序或高频的贸易系统使用专用的低延迟网络。然而,当对独立网络的需求增加时,这种独立网络的方法是昂贵的。可选地,一些已知的数据中心具有多个网络接口,每个专用于不同类型的数据流(例如,批量数据传输,存储器存取,控制通信流量)。然而,这样的一种方法在数据中心中典型地是不实用或不经济的,其不得不大范围地部署服务器虚拟化。一些其他已知的数据中心将流量流分类为不同的流量类别,以便这些类别的流量可以在数据中心独立地被缓冲。然而,将流量流分类为不同的流量类别不保证能满足每个流理想的需求,因为当数据流在进入该数据中心被分类时,对数据中心来说数据流的表现(例如,持续时间)可能是未知的或不可获得的,或者单个的应用会产生多种不同类型的数据流,其具有不同的延迟和吞吐量需求。同样,与给定数据流的服务需求类别有关的信息(例如,延迟需求)可能不被包含在数据流的数据包(或分组,packet,下同)(例如,在数据包报头中)中。
因此,存在对能够转发不同应用的数据流并且满足关联于每个给定流的理想需求而不会引入不必要的复杂度的方法和装置的需求。
发明内容
在一些实施例中,一种装置包括配置为接收一组第一数据包的转发模块。该转发模块配置为响应于接收每个第一数据包修改数据流值。该转发模块还配置为基于被修改之后没有经过(cross)数据流阈值的数据流值将每个第一数据包存储在第一输出队列中。此外,该转发模块配置为接收一第二数据包。该转发模块配置为响应于接收该第二数据包修改数据流,以便数据流值通过该数据流阈值。该转发模块配置为基于已经通过数据流阈值的数据流值将第二数据包存储在一第二输出队列中。
附图说明
图1是根据一实施例的一示意图,举例说明配置为处理关联于数据流的流状态值的流模块。
图2是根据一实施例的一示意图,举例说明一流模块包括一流状态发展模块以及一流状态计时模块,配置为修改存储在存储器中的流状态值。
图3是根据一实施例的示意图,举例说明一种交换器配置为传输数据包,包括在输入端口接收数据包,分类数据包到输出队列,并从输出端口发送数据包。
图4A是根据一实施例的示意图,举例说明一种交换器包括一种转发模块,配置为基于队列数据库中存储的数据将输入的数据包分类到输出队列中。
图4B是根据一实施例的示意图,举例说明一种队列数据库将数据流与输出队列相关联。
图5是根据一实施例的一流程图,举例说明了一种用于基于接收到的数据包更新数据流计数器的方法。
图6是根据一实施例的示意图,举例说明了一种流模块包括两个哈希模块配置为共同确定流高速缓存中的存储位置以及两个哈希表,在这两个哈希表存储有与数据流相关的信息。
图7是根据一实施例的流程图,举例说明了一种方法用于确定数据流计数器被存储的存储器位置,并基于接收的数据包更新数据流计数器。
具体实施方式
图1是根据一实施例的示意图,举例说明配置为处理与数据流相关的流状态值的流模块。特别地,流模块100配置为处理流状态值11、流状态值13、以及流状态值15、17、21和23,它们分别与数据流10、数据流12和数据流14关联(在图1中用虚线箭头表示)。流状态值11、13和15可以一起被称为流状态值19。数据流10、12和14可以一起被称为数据流18。
每个数据流18可以定义为,例如一组包,如以太网包、会话控制协议包、和/或其他类型的数据包。包可以具有数据头、负载、和/或尾部,其例如基于与开放系统连接(OSI)模型的任意层相关联的因特网协议(IP)类协议来定义。在一些实施例中,数据流18可以被称为数据流,或包流。在一些实施例中,一个或多个数据流18可以关联于两个通信设备(例如,计算机服务器、网络路由器、个人计算机等)之间的通信会话,也就是,从一个源设备发送到目的地设备。例如,数据流10可以定义从计算机服务器(未示出)发送到网络路由器(未示出)的第一通信会话的一部分,并且数据流12可以定义从移动因特网设备(未示出)发送到个人膝上型电脑(未示出)的第二通信会话的一部分,其不同于第一通信会话。在这些例子中,流模块100可以是任何类型的实体(或包括在任何实体中),其被配置为接收和处理数据。尽管在一些实施例中未示出,流模块100可以关联于(例如,包括在其中),例如,位于数据通信网络(例如,网络170,下面将详细描述)边缘,或多级交换机结构内部的分布式交换器/路由器(例如图3中示出的交换器300)的一个或多个部分。有关交换器结构的更多细节将结合图3来描述。
在一些实施例中,可以并行或串行接收数据流18的一个或多个部分。例如,可以经由流模块100的网络接口卡(未示出)在流模块100接收来自数据流12的第一数据包,并且可以随后经由相同的网络接口卡在流模块100接收(串行地)来自数据流14的第二数据包。在一些实施例中,可以经由流模块100的第一网络接口卡(未示出)在一时间周期期间在流模块100上接收来自数据流12的第一数据包,且可以在相同的时间周期期间(并行地)经由第二网络接口卡在流模块100接收来自数据流14的第二数据包。
可以用流状态值19来识别数据流18的一个或多个特征。在一些实施例中,一个或多个流状态值19可以为一个或多个数据流18表示数据包计数器,其记录已经在流模块100接收的数据流中包含的数据包数量。例如,流状态值11可以用来表示数据流10的数据包计数器,其记录了已经在流模块100接收的数据流10的数据包数量。在一些实施例中,表示数据流相对高数量的数据包的流状态值19可以表示数据流与高吞吐量的通信连接(例如,大文本文件,批量数据,等的传输)相关联。相反,表示数据流相对低数量的数据包的流状态值19可以表示数据流与等待时间敏感的通信连接(例如,视频流,控制通信,等)相关联。
在一些实施例中,一个或多个流状态值19可以表示一个或多个数据流18的最后一个(即,最近的)数据包的时间戳。这个时间戳可以记录数据流的最后一个数据包在流模块100被接收的时间。例如,可以用流状态值13来表示数据流12的最后一个数据包的时间戳。可选地,一个或多个流状态值19可以表示一种计时器,其记录在流模块100接收一个或多个数据流18的第一数据包和接收最后一个(即,最近的)数据包之间的时间总数。例如,可以用流状态值15来表示一种计时器,其记录在流模块100接收数据流14的第一数据包与接收最后一个数据包之间的时间总数。
在一些实施例中,一个或多个流状态值19可以表示用于一个或多个数据流18的数据包大小计数器,其记录已经在流模块100上接收的数据流中包括的所有数据包的总大小(例如,以位为单位)。例如,可以用流状态值17来表示用于数据流14的数据包大小计数器,其记录已经在流模块100上接收的数据流14的所有数据包的总大小。
在一些实施例中,一个或多个流状态值19可以表示用于一个或多个数据流18的平均带宽计数器,其记录了已经在流模块100接收的数据流的数据包占用的平均带宽。可以基于关联于数据流的一个或多个其他流状态值来确定这样一种平均带宽计数器。特别地,可以通过将数据流中包括的所有数据包的总大小(例如,位的单位)除以接收数据流的第一数据包以及接收最后一个数据包之间的时间总量(例如,以秒为单位)来计算数据流的平均带宽(例如,以位/秒为单位)。如图1所示的例子,可以用流状态值23来表示用于数据流14的平均带宽计数器,其可以基于数据流14中包括的所有数据包的总大小(例如,由流状态值17表示)以及接收数据流14的第一个数据包和最后一个数据包之间的时间总量(例如,由流状态值15表示)来被计算。可选地,可以利用累积运动平均函数或幂运动平均函数来计算数据流的平均带宽。
可以通过第一逻辑模块110和/或第二逻辑模块120来定义(例如,修改)一个或多个流状态值19。例如,第一逻辑模块110可以配置为响应于在流模块100上接收的并与数据流12关联的数据包来改变(例如,重置、删除、增加、减少)流状态值13。在一些实施例中,第一逻辑模块110可以基于算法来改变流状态值13。在一些实施例中,第二逻辑模块120可以基于与第一逻辑模块110所使用的不同的算法来改变流状态值13。在这些例子中,第二逻辑模块120的操作可以独立于第一逻辑模块110的操作。在一些其他的实施例中,第二逻辑模块120可以基于与第一逻辑模块110所使用的算法关联的算法改变流状态值13。在这样的实例中,第二逻辑模块120的操作可以和第一逻辑模块110的操作关联。第一逻辑模块110可以是,例如一种流状态提高模块,并且第二逻辑模块120可以是例如一种流状态定时模块。有关流状态提高模块以及流状态定时模块的更多信息会结合图2来描述。
在一些实施例中,与基于签名的各自数据流18相关联的流模块100可以识别定义每个数据流18的数据包。例如,定义数据流12的每个数据包可以包括一个共同的签名,其不同于定义数据流14的每个数据包的共同签名。相应地,数据包可以被识别为关联于数据流12的数据包而不是基于数据包签名的其他数据流,该签名与数据流12中包括的其他数据包的签名相同。在这里签名还可以被称为流签名,或数据流ID。例如,签名可以由(或基于)数据包的至少一部分(例如,数据头部分)的位值来定义。在一些实施例中,一个或多个数据流18可以具有关联于数据流18的源标识符(即,指定通信会话的源设备的标识符)和/或数据流18的目的地标识符(即,指定通信会话的目的地设备的标识符)的签名。在一些实施例中,签名可以基于数据头的一部分(例如,数据头的层-2(L2)部分,数据头的层-3(L3)部分,数据头的层-4(L4)部分)。例如,数据包可以被识别为关联于数据流12的数据包,基于数据包的数据头的L3部分和L4部分中所包括的源标识符以及目的地标识符。
在一些实施例中,第一逻辑模块110和/或第二逻辑模块120可以基于在流模块100上接收的数据包的签名来定义(或改变)一个或多个流状态值19。更特别地,可以基于接收的数据包来定义(或改变)一个或多个流状态值19,该数据包与基于数据包签名的特定数据流18相关联。例如,可以用流状态值15来表示用于数据流14的数据包计数器,可以用流状态值17来表示用于数据流14的数据包大小计数器,以及可以用流状态值21来表示当数据流14的最后一个数据包在流模块100被接收时的时间戳。结果是,当数据流14的数据包(与基于数据包签名的数据流14相关联的数据包)在流模块100被接收时,流状态值15由第一逻辑模块110(例如,流状态提高模块)增加1,流状态值17由第一逻辑模块110增加被接收的数据包的大小,以及流状态值21用第二逻辑模块120(例如,流状态计时模块)接收的数据包的时间戳来更新。在这种例子中,第一逻辑模块110的操作与第二逻辑模块120的操作相关联。特别地,两个逻辑模块都被相同的事件(即,接收到数据流14的数据包)触发来分别更新三个流状态值。
在一些实施例中,一个或多个流状态值19可以被配置为当状态条件被满足,或不满足时,基于流状态值19,触发一个动作(例如,分析、发送通知)。例如,响应于基于流状态值19被满足的状态条件,一个或多个流状态值19,和/或一个或多个数据流18的一个或多个数据包可以被发送给流模块100的流分析模块140以及在流模块100的流分析模块140被分析。对于另一个例子,如这里详细描述的,响应于基于流状态值19满足的状态条件,通知可以被发送给交换设备的其他模块(例如,图3示出的转发模块)。响应于接收到通知,可以触发接收这种通知的其他模块对数据流18的相应的数据包采取动作。
在一些实施例中,可以为不同的情景和/或不同类型的流状态值定义一个或多个状态条件。在一些实施例中,一个或多个状态条件可以被定义为当流状态值19匹配(例如,增加到,减少到)状态条件中预先确定的阈值流状态值时是满足的。例如,正如这里详细描述的,可以用流状态值11来表示数据包计数器用于数据流10。第一逻辑模块110(例如,流状态提高模块)可以配置为当在流模块100接收到数据流10的数据包之后将流状态值11增加1。当数据包计数器增加到第一阈值流状态值时,可以满足为这种数据包计数器定义的一种状态条件。相应地,当在流模块100接收到数据流10的新的数据包之后,流状态值11被第一逻辑模块110增加1。如果增加的流状态值11被确定等于第一阈值流状态值,作为结果,发送通知给转发模块。在相同例子中,第二逻辑模块120(例如,流状态计时模块)可以配置为基于算法降低流状态值11。当数据包计数器被减少到第二阈值流状态值时,可以满足为这种数据包计数器定义的另一种状态条件。相应地,第二逻辑模块120基于算法减少流状态值11。如果减少的流状态值11被确定等于第二阈值流状态值,作为结果,发送通知给转发模块。
对于另一个例子,正如这里详细描述的,可以用流状态值17来表示用于数据流14的数据包大小计数器。响应于在流模块100接收的数据流14的数据包,第一逻辑模块110(例如,流状态提高模块)可以配置为对流状态值17增加被接收的数据包的大小(例如,以位为单位)。当数据包大小计数器从一个小于阈值流状态值的值增加到等于或大于阈值流状态值时,可以满足为这种数据包大小计数器定义的一个状态条件。相应地,当在流模块100接收到数据流14的新的数据包之后,流状态值17由第一逻辑模块110增加所接收的数据包的大小。如果该增加的流状态值17被确定等于或大于阈值流状态值,作为结果,发送通知给转发模块。
对于还一例子,正如这里详细描述的,可以用流状态值23来表示用于数据流14的平均带宽计数器。响应于在流模块100接收到数据流14的数据包,第一逻辑模块110(例如,流状态提高模块)和/或第二逻辑模块120(例如,流状态计时模块)可以配置为共同更新(例如,增加、减少)流状态值23。特别地,基于已更新的流状态值15和已更新的流状态值17来更新流状态值23,其中已更新的流状态值15表示接收数据流14的第一个数据包和接收最后一个数据包之间的时间总量,且更新的流状态值17表示用于数据流14的数据包大小计数器。当平均带宽计数器从一个小于阈值流状态值的值增加到等于或大于阈值流状态值的值时,可以满足为这种平均带宽计数器定义的一种状态条件。相应地,当在流模块100接收到数据流14的新的数据包之后,流状态值23相应地由第一逻辑模块110和/或第二逻辑模块120更新。如果更新的流状态值23被确定符合相应的状态条件,作为结果,发送通知给转发模块。
在一些实施例中,流分析模块140可以收集并使用有关数据流18的流状态值19的统计数据来确定是否有一个或多个数据流18与流异常相关联。在一些实施例中,数据包(或关联于数据包的数据流)的深度数据包检查、模式匹配和/或常规表达评估(regularexpressionevaluation)可以在流分析模块140处执行。作为结果,在一些实施例中,流分析模块140可以发送通知(例如,通告、电子邮件消息、标识符)(例如,发送到交换器设备的其他模块,发送到网络管理员)。
如图1所示,流状态值19被存储在流模块100的存储器132内部的流状态数据库130中。流状态值19可以定义流状态数据库130的至少一部分。在一些实施例中,存储器132可以是,例如,随机存取存储器(RAM)(例如,动态RAM、静态RAM)、闪存、可移动存储器、等等、和/或其组合。在一些实施例中,流状态数据库130可以被实现为,例如,关系数据库、表、和/或等等。在一些实施例中,基于例如关联于每个数据流18的数据包的一部分的哈希(hash),流状态值19可以每一个被存储在存储器132内部的位置上。例如,基于来自数据流12的数据包的数据头的L2部分的哈希,可将流状态值13存储在存储器132内部的位置上。
如图1所示,数据流18可以来自网络170(或网络的一部分)。在一些实施例中,网络170可以是,例如无线网络和/或有线网络。在一些实施例中,网络170可以,例如,关联于数据中心。在这种例子中,网络170可以被称为数据中心网络。在一些实施例中,流模块100可以被配置在网络170外部,可以被包括在网络170内部,或可以位于网络170边缘(例如,边缘设备中)。
在一些实施例中,流模块100的一个或多个部分可以包括基于硬件的模块(例如,数字信号处理器(DSP)、现场可编程门阵列(FPGA))和/或基于软件的模块(例如,计算机代码模块、能够在处理器中执行的一组处理器可读指令)。在一些实施例中,一个或多个功能关联于,例如,第一逻辑模块110和/或第二逻辑模块120,其能够由不同的模块执行和/或组合为一个或多个模块。在一些实施例中,流模块100可以被包含在一个或多个诸如架单元或机架(chassis)的物理单元中。
在一些实施例中,代替数据包或除了数据包以外,流模块100的处理可以基于诸如信元(cell)(例如,固定大小的信元、可变大小的信元)的数据单元。例如,流模块100可以被配置为处理数据包,其解析(和/或组合)为信元,信元可以在例如数据中心的交换架构中传输。一些实施例中,流模块100可以配置为在处理和/或发送信元到另一个设备(未示出)之前,将一个或多个数据包解析(和/或组合)成一个或多个信元。在一些实施例中,流模块100还可以配置为从信元重建数据包。
图2是根据一实施例的一示意图,举例说明一流模块200包括一流状态提高模块210以及一流状态计时模块220,配置为修改存储在存储器240中的流状态值22。在一些实施例中,流状态提高模块210和流状态计时模块220分别能够对应于,例如图1中所示的第一逻辑模块110和第二逻辑模块120。如图2所示,流状态值22被存储在由地址值AD1到ADN表示的存储器位置中。例如,流状态值S被存储在存储器240由地址AD3表示的存储器位置上(由参考数字23表示)。对于另一个例子,流状态值TS2被存储在存储器240由地址ADN-1表示的存储器位置上。
在一些实施例中,如这里所述,一个或多个流状态值22可以表示用于一个或多个数据流的数据包计数器。例如,如图2所示,存储在由地址值AD1-AD4表示的一个存储器位置中的每个流状态值22表示用于唯一数据流的数据包计数器。每个流状态值Q、P、R和S分别表示在流模块200接收的数据流中包括的数据包的数量。在一些实施例中,如这里所述,一个或多个流状态值22可以表示用于一个或多个数据流的数据包大小计数器。例如,如图2所示,存储在由地址值AD5表示的存储器位置中的流状态值b表示用于数据流的数据包大小计数器。
在一些实施例中,如这里所述,一个或多个流状态值22可以表示一个或多个数据流的最后一个数据包的时间戳。例如,如图2所示,存储在由地址值ADN-2-ADN表示的一个存储器位置中的每个流状态值22表示唯一数据流的最后一个数据包的时间戳。每个流状态值TS1、TS2和TS3分别表示数据流的最后一个数据包的时间戳。在一些实施例中,如这里所述,一个或多个流状态值22可以表示一个计时器,其记录在流模块200上接收一个或多个数据流的第一个数据包和接收最后一个数据包之间的时间总量。例如,如图2所示,存储在由地址值AD6表示的存储器位置上的流状态值t表示一个计时器,其记录了流模块200上接收一数据流的第一个数据包和接收最后一个数据包之间的时间总量。
在一些实施例中,存储器240内部的每个存储位置可以基于流签名关联于单个的数据流(或单个的数据流类型)。在一些实施例中,这样的一种流签名可以是数据包签名,其由(或基于)数据流的数据包的至少一部分(例如,数据头部分)的位值来定义。例如,可以用数据包20的部分21来关联数据包20与数据流(图2中未示出)。也就是,数据包20的部分21可以关联于(例如,能够定义)用于包含数据包20的特定数据流的数据包签名。在一些实施例中,数据包20的部分21可以是,例如,数据包20的数据头的至少一部分,数据包20的载荷的至少一部分,和/或数据包20的尾部的至少一部分。在一些实施例中,数据包20的部分21可以包括具有数据包20的特定数据流的源标识符和/或目的地标识符。
在一些实施例中,流模块200的索引模块212可以基于数据包的一部分执行索引操作,以便来自存储器240的一个或多个存储位置(其被积极地用于存储一个或多个流状态值)可以关联于特定数据包的数据包签名(例如,L2/L3/L4位模式)。相应地,来自存储器240的存储位置可以唯一地关联于(例如,基本上唯一关联于)包括特定数据包的特定数据流。因此,流状态值22,其关联于特定数据流,可以在也关联于特定数据流的单一的存储器位置上(例如,来自存储器240的单一的存储位置)被更新(例如,增加,减少)。例如,索引模块212可以基于数据包20的部分21执行索引操作来确定数据包20的索引值24,或确定相当于包括该数据包20的数据流的索引值24。可以用索引值24来(例如,被流状态提高模块210,被流状态计时模块220)识别存储器240中的一个或多个存储位置(例如,由地址AD3表示的存储位置,由地址ADN-1表示的存储位置),其关联于包括数据包20的数据流。作为结果,存储在所识别的存储位置中的流状态值22(例如,流状态值S,流状态值TS2)可以基于数据包20提供的信息被相应地更新(例如,被流状态提高模块210,被流状态计时模块220)。被更新的流状态值22关联于包含数据包20的数据流。
在一些实施例中,流模块200的索引模块212可以基于数据流的数据包20执行一个或多个方法来为数据流确定一个或多个索引值24,并且该确定的索引值24可以用来识别关联于该数据流的存储器240中的一个或多个存储位置。例如,如图2所示,索引模块212基于数据流的数据包20确定至少四个索引值24。流状态提高模块210和流状态计时模块220都能够利用第一索引值24来选择由地址AD3表示的存储位置,用于数据流的数据包计数器被存储在那里。与此同时,流状态提高模块210可以利用第二索引值24来选择由地址AD5表示的存储位置,用于数据流的数据包大小计数器被存储在那里。流状态计时模块220可以利用第三索引值24来选择由地址AD6表示的存储位置,记录接收数据流的第一个数据包和接收最后一个数据包之间的时间总量的计时器被存储在那里。流状态计时模块220可以利用第四个索引值24来选择由地址ADN-1表示的存储位置,数据流的最后一个数据包的时间戳被存储在那里。另外,在一些实施例中,每个索引值24可以用来识别存储器240的唯一的存储位置。在一些实施例中,索引值24可以是表示存储器240中存储位置的地址的值。可选地,索引值24可以是其他形式的值,其能够唯一地识别存储器240的存储位置。
在一些实施例中,如下面结合图6和图7详细描述的,索引模块212可以实现哈希函数来确定索引值24。特别地,索引值24可以是基于数据包的一部分(例如,数据包20的部分21)计算的哈希值。在这种实施例中,索引模块212可以是哈希模块(例如,配置为执行哈希函数的哈希模块),被配置为确定索引值24,以及流状态值22可以在存储器240中被存储为哈希表。在一些实施例中,存储在存储器240中的流状态值22可以一起定义流表。在一些实施例中,流表可以实现为布隆过滤器(bloomfilter)(并且利用多个哈希函数)。在一些实施例中,索引模块212的功能性可以被定义以便将涉及到索引值计算的冲突能被减少到一个满意的程度。也就是,由索引模块212确定的用于数据流的索引值24有别于由索引模块212确定的用于不同数据流的索引值24。在一些实施例中,如结合图6和图7描述的,索引模块212可以实现一个以上的哈希模块来降低涉及索引值计算的冲突。
在一些实施例中,流状态提高模块210可以配置为当基于一个或多个索引值24(其由索引模块212确定)选择了流状态值22时增加(例如,在单一的存储位置上增加)存储器240中存储的一个或多个流状态值22。特别地,响应于基于接收的数据包的处理由索引模块212选择了存储器240中的存储位置,可以用增加的流状态值在该存储器位置替换(例如,重写)该存储器位置处的流状态值22中的一个。例如,如图2所示,流状态提高模块210配置为增加流状态值S(由参考数字23表示),其表示数据包计数器,以响应基于索引值24识别了地址AD3表示的存储位置。特别地,当数据包20在流模块200上被接收时,索引模块212基于数据包20的部分21(例如,数据头部分,尾部分)确定一个或多个索引值24。该流状态提高模块210基于索引值24的一个选择由地址AD3表示的存储位置,并且接着相应地,将对应的流状态值(由参考数字23表示)从S增加到S+1。因此,流状态值(由参考数字23表示),其表示用于数据流的数据包计数器,响应于在流模块200上接收到数据流的数据包20而增加1。
对于另一个例子,如图2所示,流状态提高模块210配置为增加流状态值b,其表示数据包大小计数器,以响应于基于索引值24识别了由地址AD5表示的存储位置。特别地,当数据包20在流模块200被接收时,索引模块212基于数据包20的部分21(例如,数据头部分,尾部分)确定一个或多个索引值24。流状态提高模块210基于索引值24的一个选择由地址AD5表示的存储位置,并且接着相应地,将对应的流状态值增加数据包20的大小。因此,表示用于数据流的数据包大小计数器的流状态值被相应地增加,以响应于在流模块200接收到数据流的数据包20。
在一些实施例中,流状态计时模块220可以配置为当基于一个或多个索引值24选择了流状态值22时,更新(例如,改变)一个或多个流状态值22,索引值24由索引模块212确定。特别地,来自存储器240的存储位置上的一个流状态值22可以在该存储器位置处被替换(例如,改写)为不同的流状态值,以响应于基于数据包的处理由索引模块212选择了该存储位置。例如,如图2所示,流状态计时模块220配置为更新流状态值TS2,以响应于基于索引值24识别了由地址ADN-1表示的存储位置。特别地,当在流模块200接收到数据包20时,索引模块212基于数据包20的部分21(例如,数据头部分,尾部分)确定一个或多个索引值24。流状态计时模块220基于一个索引值24选择由地址ADN-1表示的存储位置,并且接着相应地,将对应的流状态值TS2替换为数据包20的时间戳(即,数据包20被接收的时间)。因此,流状态值TS2,其表示数据流的最后一个数据包的时间戳,被更新,以响应于在流模块200接收到数据流的数据包20。
对于另一个例子,如图2所示,响应于基于索引值24识别由地址AD6表示的存储位置,流状态计时模块220配置为更新流状态值t,表示一种计时器其记录接收数据流的第一个数据包和接收最后一个数据包之间的时间总量。特别地,当数据包20在流模块200被接收时,索引模块212基于数据包20的部分21(例如,数据头部分,尾部分)确定一个或多个索引值24。流状态计时模块220基于一个索引值24选择由地址AD6表示的存储位置,并且接着相应地,将相应的流状态值t替换为接收数据流的第一数据包和接收数据包20(即,数据流的最后一个数据包)之间的更新的时间总量。因此,流状态值t,表示计时器其记录了接收数据流的第一个数据包和接收最后一个数据包之间的时间总量,响应于在流模块200接收到数据流的数据包20而被更新。
在图2示出的例子中,流状态提高模块210和/或流状态计时模块220可以配置为共同更新流状态值(图2中未示出),其表示用于数据流的平均带宽计数器,以响应于基于索引值24识别平均带宽计数器被存储的存储位置。特别地,当数据包20在流模块200被接收时,索引模块212基于数据包20的部分21(例如,数据头部分,尾部分)确定一个或多个索引值24。如这里详细描述的,流状态提高模块210和流状态计时模块220分别更新表示数据包大小计数器的流状态值,以及表示记录接收数据流的第一个数据包和接收最后一个数据包之间的时间总量的计时器的流状态值。随后,流状态提高模块210和/或流状态计时模块220选择平均带宽计数器被存储的存储位置,并接着相应地,用基于已更新的数据包大小计数器和计时器而计算出的新值来更新平均带宽计数器。因此,流状态值,其表示用于数据流的平均带宽计数器,响应于在流模块200接收到数据流的数据包20而被更新。
在一些实施例中,流状态计时模块220可以配置为基于一个或多个算法减少(例如,在单独的存储位置减少)一个或多个流状态值22,而与在流模块200接收的输入的数据包无关。在一些实施例中,流状态计时模块220可以配置为周期性地减少表示用于数据流的数据包计数器的流状态值22,而与在流模块200接收的数据流的数据包无关。如图2示出的例子所示,流状态计时模块220可以配置为在每个固定时段之后将存储在由地址AD3表示的存储位置上的数据流的数据包计数器减小固定的值。该固定值和该固定时段可以在算法中预先确定。例如,流状态计时模块220可以配置为每30分钟之后将数据包计数器减小1。对于另一个例子,流状态计时模块220可以配置为在每24小时之后将数据包计数器减小2。类似地,在一些实施例中,流状态计时模块220可以配置为周期性地减小表示数据流的数据包大小计数器的流状态值22,不考虑在流模块200接收的数据流的数据包。
在一些实施例中,流状态计时模块220可以配置为根据在流模块200接收的输入的数据包,基于一个或多个算法减少一个或多个流状态值22。在一些实施例中,流状态计时模块220可以配置为:如果在一段固定的时段内在流模块220没有接收到数据流的数据包,则将用于表示数据流的数据包计数器的流状态值22减小一个固定的值。换句话说,流状态计时模块220可以配置为:自在流模块200接收到数据流的最后一个数据包起的一段固定时段之后,将表示用于数据流的数据包计数器的流状态值22减小一个固定值。该固定值和固定时段可以在算法中预先确定。例如,如图2所示,在自数据流的最后一个数据包在流模块200被接收起的一个小时之后,流状态计时模块220配置为将存储在由地址AD3表示的存储位置的用于数据流的数据包计数器减小1。在这种实施例中,数据流的计时信息,例如,数据流的最后一个数据包的时间戳,可以被存储在存储器240中作为流状态值,并且当需要时可以被提供给流状态计时模块220。类似地,在一些实施例中,流状态计时模块220可以配置为:如果在一段固定的时段内在流模块220没有接收到数据流的数据包,将表示用于数据流的数据包大小计数器的流状态值22减小一个固定值。
在一些实施例中,冲突偏好可以用来解决流状态提高模块210和流状态计时模块220之间的冲突。例如,如果流状态提高模块210和流状态计时模块220试图在相同时间(或在相同时段内)改变流状态值22的流状态值,流模块200可以配置为基于冲突偏好来解决该冲突。在一些实施例中,冲突偏好可以被定义成它触发流模块200来,例如允许被流状态提高模块210改变以及取消流状态计时模块220的改变(或相反)。在一些实施例中,冲突偏好可以被定义成它触发流模块200来,例如,在流状态计时模块220的改变被计划之前,计划流状态提高模块210的改变(或相反)。
在一些实施例中,存储器240内部的存储位置可以被初始化为一个或多个指定的流状态值。例如,由地址AD1-AD4表示的存储器240的存储位置可以在任何数据流的数据包在流模块200被接收之前,被初始化为用于数据包计数器的初始值(例如,零)。在一些实施例中,存储器240内部的一个或多个存储位置可以在流模块200操作期间的任何时间被设置为一个指定的流状态值。例如,存储器240内部的存储位置可以是随机地、周期性地、和/或等等在流模块200的操作期间设置为一个或多个指定的流状态值。在一些实施例中,当存储位置,例如,由索引模块212第一次选择时,存储器240的存储位置(例如,由地址值AD1表示的存储位置)可以被设置为指定的初始值(例如,数据包计数器为零)。
图3是根据一实施例的示意图,举例说明一种交换器300配置为转发数据包,包括在输入端口302接收数据包,分类数据包到输出队列(例如,输出队列330,输出队列340),并从输出端口304发送数据包。交换器300可以是操作性地在通信连接网络中从其他设备接收数据或向其他设备发送数据(例如,数据包和/或数据信元的数据流)的任何设备。在一些实施例中,交换器300可以是多级交换架构(例如,3级交换架构,5级交换架构)中的分布式交换器/路由器的一个或多个部分。例如,尽管未示出,交换器架构可以包括入口级,中间级,和出口级。在一些实施例中,交换器架构可以是可再配置地(例如,可再布置地)无阻断的交换器架构和/或时分复用交换器架构。在一些实施例中,交换器架构可以被包括在数据中心网络(例如,一数据中心网络的核心部分)中。特别地,交换器架构可以定义数据中心网络的核心部分,它可以包括设备的网络或互联。在一些实施例中,交换器架构可以基于Clos网络结构(例如,严格意义的无阻塞Clos网络,Benes网络)来定义,其形成用于分布式交换器/路由器系统的数据平面,该分布式交换器/路由器系统可以被包括在(或定义)数据中心网络的核心之中。在一些实施例中,一个或多个外围处理设备(例如,计算节点,存储节点,服务节点和/或路由器)和/或其他网络设备可以被操作性地耦合到(例如,包括在…内部)数据中心网络。涉及交换器架构的更多细节在以下中阐述:2009年3月31日提交的共同未决U.S.专利申请No.12/414,825,标题为“DistributedMulti-StageSwitchFabric”,2008年12月29日提交的共同未决U.S.专利申请No.12/345,502,标题为“MethodsandApparatusRelatedtoaModularSwitchArchitecture”,以及2008年12月29日提交的共同未决U.S.专利申请No.12/345,500,标题为“SystemArchitectureforaScalableandDistributedMulti-StageSwitchFabric”,这里合并引用它们所有的内容。
如图3所示,交换器300可以包括一个或多个输入端口302和一个或多个输出端口304。输入端口302和输出端口304可以是一个或多个通信接口和/或网络接口(例如,40十亿比特(Gb)以太网接口,100Gb以太网接口,等)的一部分,交换器300可以通过它们发送数据(例如,数据包和/或数据信元的数据流)给通信网络中的其他设备和/或接收来自通信网络中的其他设备的数据。与交换器300通信的设备可以利用任何适合的连接,例如像光连接(例如,光缆和光学连接器),电连接(例如,电缆和电连接器),无线连接(例如,无线链路和无线信号收发器)和/或类似,操作性地耦合到交换器300的一个或多个输入端口302和/或输出端口304。类似地说,在一些实施例中,输入端口302和输出端口304可以利用双绞线电信令经由电缆,或利用光纤信令经由光纤缆线,或利用无线信令经由两个无线信号收发器之间的无线链路,实现物理层。在一些实施例中,一些输入端口302和/或输出端口304实现一个物理层例如双绞线电信令,并且其他的输入端口302和/或输出端口304实现不同的物理层例如光纤信令。
此外,输入端口302和输出端口304可以允许交换器300通过一个或多个通信协议(例如,以太网协议,多协议标签交换(multi-protocollabelswitching,MPLS)协议,光纤信道协议,通过以太网的光纤信道(fibre-channeloverEthernet)协议,与Infiniband有关的协议,等),与耦合于交换器300的其他设备,例如像计算机服务器,来进行通信。在一些实施例中,一些输入端口302和/或输出端口304实现一种例如以太网的协议并且其他输入端口302和/或输出端口304实现一种例如像光纤信道的不同的协议。因此,交换器300可以利用相同的或不同的物理层和/或协议经由一个或多个输入端口302和/或输出端口304,与多个设备进行通信。
在一些实施例中,交换器300可以配置为在一个特定的输入端口302接收给定数据流的每个输入数据包,和/或从特定输出端口304发送数据流的每个输出数据包。例如,当在交换器300和另一个设备(例如,数据流的源设备,数据流的目的地设备)之间构建通信会话来传输数据流的数据包时,输入端口302和/或输出端口304被识别用于那种通信会话,以便这种通信会话中的所有数据包都通过特定的输入端口302和/或特定的输出端口304被传输。在一些其他的实施例中,交换器300可以使用一个以上的输入端口302和/或一个以上的输出端口304来传输单个数据流的数据包。
在一些实施例中,在一个输入端口302接收数据流的数据包之后,交换器300可以处理数据包(例如,通过转发模块320),基于队列数据库(例如,队列数据库325)提供的信息转发数据包给一个输出队列(例如,输出队列330,输出队列340),从输出队列移动数据包到一个输出端口304,并且最后从输出端口304发送出数据包。包括流模块310的转发模块320在交换器300内部的处理器306内部执行。在一些实施例中,转发模块320的一个或多个部分可以包括基于硬件的模块(例如,数字信号处理器(DSP),现场可编程门阵列(FPGA))和/或基于软件的模块(例如,在处理器上执行的计算机代码模块,在处理器上执行的处理器可读指令集合)。在一些实施例中,关联于转发模块320的一个或多个功能可以由不同的模块执行和/或组合为一个或多个模块。在一些实施例中,转发模块320可以被包括在一个或多个物理单元(例如架单元或机架)中。
类似于图1中描述的流模块100以及图2中描述的流模块200,流模块310可以配置为处理关联于在一个或多个输入端口302接收的数据流的数据包的流状态值。此外,转发模块320可以配置为基于由流模块310处理的数据包的流状态值,转发数据包到一个或多个输出队列(例如,输出队列330,输出队列340)之中。转发模块320,流模块310,输出队列330,输出队列340,以及队列数据库325之间的交互细节将在下文结合图4详细描述。
如图3所示,输出队列330,输出队列340,以及队列数据库325被存储在交换器300的存储器308中。在一些实施例中,存储器308可以是,例如随机访问存储器(RAM)(例如,动态RAM,和静态RAM),闪存,可移动存储器,和/或等等。在一些实施例中,输出队列(例如,输出队列330,输出队列340)和队列数据库(例如,队列数据库325)可以实现为,例如关系数据库,表,和/或等等。在一些实施例中,输出队列330,输出队列340,和队列数据库325每一个可以被存储在存储器308内部的一个或多个存储位置中。在一些实施例中,尽管图3中未显示,交换器300可以包括两个以上输出队列和/或一个以上队列数据库。
图4A是根据一实施例的示意图,其举例说明一种交换器300,包括转发模块320,配置为基于队列数据库325中存储的数据将输入的数据包(例如,数据流40,数据流42,数据流44)分类到输出队列(例如,输出队列330,输出队列340)。类似于图1中的流模块100和图2中的流模块200,当在流模块310接收到数据包时,流模块310可以配置为基于数据包的签名来识别关联于数据流的数据包。注意尽管图4A显示了流模块310位于转发模块320内并且是其一部分,但在其他实施例中这些模块可以彼此分离。如这里详细描述的,在一些实施例中,数据包的签名可以由数据包的至少一部分(例如,数据头部分)的位值来定义(或基于数据包的至少一部分(例如,数据头部分)的位值)。例如,数据包的签名可以基于包含在数据包的数据头中的源标识符和/或目的地标识符来确定。特别地,数据包的签名可以是基于表示数据包的源标识符和/或目的地标识符的位值根据哈希函数计算的哈希值。
在一些实施例中,数据包的签名可以是数据流ID,它唯一识别包括数据包的数据流。例如,如图4A所示,在流模块310接收的数据包的签名可以基于数据包的数据头中包含的源标识符和/或目的地标识符。因此,数据包可以由流模块310确定为关联于由数据流40的数据流ID识别的数据流。在一些其他实施例中,数据包的签名可以关联于数据流ID,它唯一识别包含数据包的数据流。例如,尽管图4A中未显示,交换器300可以包括数据结构(例如,表,数据库),其关联每个数据包签名与数据流ID。因此,数据包可以被确定为关联于数据流,如果数据包的签名能够被确定,在数据结构中,数据包可以被确定为关联于数据流的数据流ID。
如结合图1和图2所描述的,当已接收的数据包被识别为与数据流关联之后,流模块310可以识别与数据流关联的一个或多个流状态值。此外,流模块310可以修改(例如,增加,减少)与数据流关联的流状态值,以响应于在流模块310接收到与数据流关联的数据包。例如,当在流模块310接收数据包并识别为关联于数据流40之后,流模块310识别一个或多个流状态值,包括表示用于数据流40的数据包计数器的流状态值、表示用于数据流40的数据包大小计数器的流状态值、表示用于数据流40的平均带宽计数器的流状态值、以及表示数据流40的最后一个数据包的时间戳的流状态值,等。此外,流模块310配置为将数据流40的数据包计数器增加1、将数据流40的数据包大小计数器增加所接收的数据包的大小、以及相应更新平均带宽计数器和数据流40的最后一个数据包的时间戳。因此,关联于数据流40的流状态值被更新,以响应于在流模块310接收到数据流40的数据包。
如结合图3详细描述的,交换器300包括队列数据库325,输出队列330,以及输出队列340,其被存储在交换器300的存储器(例如,如图3所示的存储器308)内部。更特别地,如这里详细描述的,队列数据库325存储关联于输出队列的数据。每个输出队列(例如,输出队列330,输出队列340)配置为基于由队列数据库325提供的数据,接收一个或多个数据流的一个或多个数据包,其通过转发模块320被转发。每个输出队列接着配置为临时存储数据包,并且最后发送数据包给交换器300的一个或多个输出端口(例如,如图3所示的输出端口304)。
图4B是根据一实施例的示意图,举例说明一种队列数据库325将数据流(例如,数据流40,数据流42,数据流44)与输出队列(例如,输出队列330,输出队列340)相关联。队列数据库325可以具有至少两列条目(entry),示出为数据流ID350和输出队列ID360。第一列,数据流ID350,包含数据流ID(例如,40,42,44),每个唯一地识别在交换器300接收的数据流。第二列,输出队列ID360,包含输出队列ID(例如,330,340),每个唯一地识别输出队列,其用来在发送数据包给一个或多个输出端口之前临时存储数据包。此外,数据流ID350列的每个数据流ID关联于输出队列ID360列中的一个输出队列ID。例如,数据流40关联于输出队列330,数据流42和数据流44关联于输出队列340。队列数据库325被转发模块320用来确定将数据流的接收到的数据包移动到哪个输出队列中。特别地,转发模块320将数据流的接收到的数据包移动到在队列数据库325中被识别为关联于所述数据流的输出队列中。例如,如图4B所示,数据流40的数据包被转发模块320移动到输出队列330,因为数据流40在队列数据库325中被识别为关联于输出队列330。类似地,数据流42或数据流44的数据包被转发模块320移动到输出队列340,因为数据流42和数据流44在队列数据库325中被识别为关联于输出队列340。
如以上结合图1详细描述的,一个或多个流状态值可以配置为当状态条件满足或不满足时,基于流状态值触发一种动作。此外,在一些实施例中,当流状态值匹配状态条件中定义的阈值流状态值时,状态条件可以被满足。回到图4A,转发模块320可以被触发来访问队列数据库325,并且当关联于已接收的数据包的一个或多个流状态值匹配状态条件中定义的一个或多个阈值流状态值时,相应地修改存储在队列数据库325中的数据(例如,数据流ID,输出队列ID)。特别地,当关联于已接收数据包的一个或多个流状态值(例如,数据包计数器,数据包大小计数器,平均带宽计数器,时间戳,等)匹配一个或多个阈值流状态值(例如,数据包数量阈值,数据包大小阈值,带宽阈值,时间阈值,等)时,转发模块320可以被触发来访问队列数据库325,并修改(例如,增加,减少),删除,和/或插入队列数据库325的关联于已接收的数据包的一个或多个条目(例如,数据流ID,输出队列ID)。
在一些实施例中,响应于在转发模块320接收到数据流的数据包,当数据流的数据包计数器被增加到一个数据包数量阈值时,转发模块320可以被触发来改变关联于队列数据库325中的数据流的输出队列ID。例如,当在转发模块320接收到数据流42的数据包之后,用于数据流42的数据包计数器被从9增加到10,它等于预定的数据包数量阈值。结果是,在队列数据库325中,转发模块320被触发将关联于数据流ID42的输出队列ID(如果当数据包计数器是9时输出队列ID是330)从330改变到340。
在一些实施例中,响应于在转发模块320接收到数据流的数据包,当数据流的数据包大小计数器被增加从而经过(cross)(例如,等于,大于)一个数据包大小阈值时,转发模块320可以被触发来改变队列数据库325中的关联于数据流的输出队列ID。例如,当大小为20的数据流42的数据包在转发模块320被接收之后,用于数据流42的数据包大小计数器从100增加到120,它经过预定的数据包大小阈值105。结果是,在队列数据库325中,转发模块320被触发将关联于数据流ID42的输出队列ID(如果当数据包大小计数器是100时输出队列ID是330)从330改变到340。
在一些实施例中,响应于在转发模块320接收到数据流的数据包,当数据流的平均带宽计数器被增加从而经过(例如,等于,大于)一个带宽阈值时,转发模块320可以被触发来改变队列数据库325中的关联于数据流的输出队列ID。例如,当数据流42的数据包在转发模块320被接收之后,用于数据流42的平均带宽计数器基于用于数据流42的已更新的数据包大小计数器以及已更新的记录接收数据流42的第一个数据包与接收最后一个数据包之间的时间总量的计时器,从1000位/秒更新到1100位/秒。结果是,已更新的平均带宽计数器经过预定带宽阈值1050位/秒,在队列数据库325中,转发模块320被触发将关联于数据流ID42的输出队列ID(如果当平均带宽计数器是1000位/秒时输出队列ID是330)从330改变到340。
在一些实施例中,当响应于根据预定调度减小数据包计数器,用于数据流的数据包计数器被减少到一个数据包数量阈值时(所述预定调度与在转发模块320接收到数据流的数据包无关),转发模块320可以被触发来改变队列数据库325中的关联于数据流的输出队列ID。例如,根据预定调度,流模块310配置为每30分钟将数据流42的数据包计数器减小1(如果用于数据流42的数据包计数器大于零),而不考虑接收到数据流42的任何数据包。当数据流42的数据包计数器从6减小到5(其等于预定数据包数量阈值)时,在队列数据库325中,转发模块320被触发将关联于数据流ID42的输出队列ID(如果当数据包计数器是6时输出队列ID是340)从340改变到330。
在一些实施例中,响应于根据预定调度减少的数据包计数器,当用于数据流的数据包计数器被减少到数据包数量阈值时(其中预定调度依赖于在转发模块320接收的数据流的数据包),转发模块320可以被触发来改变队列数据库325中的关联于数据流的输出队列ID。例如,当在转发模块320接收到数据流42的最后一个数据包之后,根据预定调度,流模块310配置为每30分钟将数据流42的数据包计数器减小1(如果用于数据流42的数据包计数器大于零)。也就是,如果自从数据流42的最后一个数据包被接收起的30分钟之内没有数据流42的数据包被接收,则数据流42的数据包计数器被减少1,并且如果在每个30分钟之内没有数据流42的数据包被接收,则将持续地每隔30分钟被减少1。类似地说,当用于数据流42的数据包计数器从6减少到5,其等于预定数据包数量阈值,在队列数据库325中,转发模块320被触发将关联于数据流ID42的输出队列ID(如果当数据包计数器为6时输出队列ID为340)从340改变到330。在这种实施例中,转发模块320配置为基于被存储作为关联于流模块310中数据流的流状态值的最后一个数据包的时间戳,确定数据流的最后一个数据包在转发模块320被接收的时间。
在一些实施例中,当用于数据流的数据包计数器被减少到数据包数量阈值时,或用于数据流的数据包大小计数器被减少到数据包大小阈值时,转发模块320可以被触发来删除条目,包括队列数据库325中的至少一个数据流ID以及关联的输出队列ID。例如,当数据流44的数据包计数器从1减少到0时(例如,根据预定调度),其等于预定数据包数量阈值,该转发模块320被触发在队列数据库325中删除数据流ID44以及关联的输出队列ID340的条目。
在一些实施例中,当响应于在转发模块320接收到数据流的第一个数据包,用于数据流的数据包计数器或数据包大小计数器在流模块310中被定义和/或被初始化时,转发模块320可以被触发来在队列数据库325中定义一个新的条目,包括至少一个数据流ID以及一个关联的输出队列ID。例如,当在转发模块320接收到数据流40的第一个数据包之后,数据流40的数据包计数器在流模块310中被定义并被初始化为1。结果是,转发模块320被触发来在队列数据库325中定义一个新的条目,其包括数据流ID40以及关联的输出队列ID330。
回到图3,在转发模块320基于队列数据库325中提供的数据转发数据包给一个输出队列(例如,输出队列330,输出队列340)之后,数据包被放置在输出队列中(例如,数据包队列),相应地移动到一个输出端口304,并最后从输出端口304发送到目的地设备。在一些实施例中,输出队列(例如,输出队列330,输出队列340)可以被实现为先进先出(FIFO)队列。换句话说,较另一个数据包早放置在队列中的数据包较早于另一个数据包离开队列(例如,到达输出端口)。
在一些实施例中,输出队列配置为以不同速率移动数据包到一个或多个输出端口304。即,一个输出队列可以移动它的数据包到一个或多个输出端口的速率不同于另一个输出队列移动它的数据包到一个或多个输出端口的速率。例如,如图3所示,输出队列330可以配置为以10个数据包每单位时间(例如,毫秒)的速率移动数据包到一个或多个输出端口304,而输出队列340可以配置为以2个数据包每单位时间(例如,毫秒)的速率移动数据包到一个或多个输出端口304。对于另一个例子,输出队列340可以配置为以输出队列330移动数据包到一个或多个输出端口304的速率的一半(或,大致一半)的速率移动数据包到一个或多个输出端口304。换句话说,在任何固定的时段内,由输出队列340移动到一个或多个输出端口304的数据包数量是由输出队列330移动到一个或多个输出端口304的数据包数量的一半(或,大致一半)。
在一些实施例中,具有相对慢的输出速率(即,输出队列移动数据包到一个或多个输出端口的速率)的输出队列倾向于转发关联于高吞吐量的通信连接的数据流的数据包(例如,转送大文本文件,批量处理数据,等)。另一个方面,具有相对快的输出速率的输出队列倾向于转发关联于等待时间敏感(通常是低吞吐量)通信连接的数据流的数据包(例如,视频流,控制通信,等)。因此,关联于等待时间敏感通信连接的数据流的数据包从输出队列到输出端口的移动可以快于关联于高吞吐量通信连接的数据流的数据包。在一些实施例中,具有相对慢输出速率的输出队列被称为低优先级输出队列,并且具有相对快输出速率的输出队列被称为高优先级输出队列。
图5是根据一实施例的一流程图,举例说明了一种用于基于接收到的数据包更新数据流计数器(例如,数据包计数器,数据包大小计数器)的方法。在502,数据包可以在交换设备上被接收。数据包可以关联于数据流,其起源于一台源设备并且去往一台目的地设备。如参考图3详细描述的,例如,数据包可以在交换设备(例如,交换器300)的输入端口(例如,输入端口302)被接收并且接着转发到交换设备的转发模块(例如,转发模块320),和/或进一步转发到转发模块内部的流模块(例如,流模块310)。
在504,已接收数据包的数据流ID可以被确定。例如,如结合图2详细描述的,流模块(例如,流模块200)的索引模块(例如,索引模块212)可以基于已接收数据包的一部分(例如,数据包20的部分21)执行一索引操作来确定具有已接收数据包的数据流的数据流ID(例如,索引值24)。在一些实施例中,索引值24可以是基于已接收数据包的一部分(例如,数据包20的部分21)计算的哈希值,所述部分包括数据流的源标识符和/或目的地标识符。在一些实施例中,数据流ID可以关联于存储在交换设备中的存储器中的流表中的一个或多个条目。例如,索引值24可以被用来识别存储在存储器240中的一个或多个存储器位置上的一个或多个流状态值。在一些实施例中,索引值24可以用来识别存储在流表中的数据包计数器,所述流表关联于包含已接收数据包的数据流。
在506,可以在流模块确定已接收的数据包的数据流ID是否关联于流表中的条目。例如,如以上参考图2详细描述的,流状态提高模块210可以配置为确定数据包20的索引值24是否可以用来识别关联于存储在存储器240内部的一个或多个存储位置上的数据包20(或等同地说,包括数据包20的数据流)的一个或多个流状态值。特别地,流状态提高模块210可以配置为确定数据包20的索引值24是否可以用来识别关联于包括数据包20的数据流的数据包计数器,其存储在存储器240内部的存储位置上。
在508,如果已接收数据包的数据流ID被确定不关联于流表中的数据流计数器(例如,数据包计数器,数据包大小计数器)的任何条目,关联于数据流的新的数据流计数器可以在流表中被定义(例如,定义,初始化)。例如,如以上结合图2详细描述的,如果数据包20的索引值24由流状态提高模块210确定为不能识别存储在存储器240中的任何流状态值,流状态提高模块210指示没有流状态值被存储在关联于包括数据包20的数据流的存储器240中。换句话说,数据包20是在流模块200接收的数据流的第一个数据包。结果是,关联于包括数据包20的数据流的新的数据包计数器可以在存储器240的存储位置(例如,由地址AD3表示的存储位置)被定义。此外,关联于包括数据包20的数据流的数据包计数器可以被初始化为初始值(例如,零)。
在510,如果已接收数据包的数据流ID被确定为关联于流表中的数据流计数器(例如,数据包计数器,数据包大小计数器)的条目(在506示出),或一种新的数据流计数器被定义在流表中用于包括已接收数据包的数据流(在508示出),可以在流模块处将数据流的数据流计数器中存储的值与计数器阈值进行比较。例如,如以上参考图2详细描述的,如果数据包20的索引值24由流状态提高模块210确定为能识别存储在存储器240内部的至少一个流状态值(例如,数据包计数器,数据包大小计数器),或新的数据包计数器在存储器240内部的存储位置被定义并初始化(例如,初始化为零)用于具有数据包20的数据流,接着用于包括数据包20的数据流的数据包计数器在存储器240内部的存储位置(例如,由地址AD3表示的存储位置)被识别,并且对于流状态提高模块210来说是可用的(例如,可访问)。接下来,流状态提高模块210可以配置为比较存储在数据包计数器中的值与预定计数器阈值,来确定存储在数据包计数器中的值是否等于预定的计数器阈值。
在512,如果存储在包含已接收数据包的数据流的数据流计数器中的值(例如,数据包计数器,数据包大小计数器)被确定为等于计数器阈值,那么转换信号可以被发送给队列数据库。特别地,转换信号可以从接收并处理已接收数据包的转发模块发送到存储数据的队列数据库,其关联于将已接收数据包分类为一个或多个输出队列。此外,转换信号可以是引起队列数据库修改关联于队列数据库中存储的数据流的一个或多个条目的信号。例如,如以上参考图4A和图4B描述的详细内容,如果转发模块320确定存储在数据流40的数据包计数器中的值等于预定计数器阈值,转发模块320可以配置为发送转换信号到队列数据库325,引起队列数据库325将关联于数据流ID40的输出队列ID从330改变到340。
在514,流表中的数据流计数器(例如,数据包计数器,数据包大小计数器),其关联于具有已接收数据包的数据流,可以被增加。例如,如结合图2详细描述的,响应于接收到数据包20以及识别存储器240内部的包括数据包20的数据流的数据包计数器(例如,存储在由地址AD3表示的存储位置上),流状态提高模块210可以配置为将数据包计数器增大1。
在516,交换设备可以等待下一个数据包,并且在接收到新的数据包时,对接收到的数据包重复操作502-514。例如,结合图2,流模块200可以在数据包20被处理之后等候下一个数据包。接收到新的数据包之后,流模块200和交换设备的其他部分可以对新的数据包重复已经对数据包20执行的操作502-514。
图6是根据一实施例的示意图,举例说明了一种流模块600包括两个哈希模块(例如,哈希模块620,哈希模块640),它们配置为共同确定流高速缓存(即,流高速缓存610)中的存储位置以及两个哈希表(即,哈希表630,哈希表650),在这两个哈希表中存储有关联于数据流的信息。更特别地,如结合图7详细描述的,哈希模块620和哈希模块640配置为共同确定流高速缓存610中的存储位置、哈希表630、以及哈希表650,其中存储有关联于一个或多个数据流的信息。该存储的信息包括关联于数据流的流状态值(例如,数据包计数器,数据包大小计数器,等)以及涉及数据流的其他数据。
在一些实施例中,哈希模块620可以配置为基于关联于数据流的数据包的一部分(例如,数据头部分)执行哈希函数来计算哈希值。此外,在一些实施例中,哈希值可以基于数据包的一部分由哈希函数计算,所述部分是数据包的共同部分,该共同部分包括在与特定数据流关联的所有数据包上相同的位值。结果是,被计算的哈希值在所有关联于数据流的数据包上相同。因此,这种被计算的哈希值可以用作为索引值来确定哈希表630中的存储位置(如果有哈希表630中的任何存储位置关联于数据流),其中关联于数据流的流状态值(例如,数据包计数器,数据包大小计数器)被存储。例如,哈希模块620可以配置为基于关联于数据流的数据包的数据头的L2部分执行哈希函数来计算哈希值,其中数据头的L2部分包括共同的位值,其表示在所有关联于数据流的数据包上相同的源标识符和/或相同的目的地标识符。结果是,在关联于数据流的所有数据包上计算出的哈希值是相同的。因此,哈希值用作为索引值被流模块600用来确定在哈希表630中的存储位置,其中存储有数据流的数据包计数器,或数据流的数据包大小计数器。
类似于哈希模块620,哈希模块640也可以配置为基于关联于数据流的数据包的共同部分,执行哈希函数来计算哈希值,所述部分包括在所有关联于特定数据流的数据包上的相同的位值。结果是,如这里详细描述的,在关联于数据流的所有数据包上计算出的哈希值是相同的,并且可以用作为索引值来确定哈希表650中的存储位置(如果哈希表650的任何存储位置关联于数据流),其中关联于数据流的数据(例如,标记)被存储。
在一些实施例中,哈希模块640可以配置为基于哈希模块620使用的数据包的同一个共同部分,执行哈希函数(其不同于哈希模块620中执行的哈希函数),来生成哈希值,其不同于由哈希模块620生成的哈希值。在一些其他实施例中,哈希模块640可以配置为基于数据包的共同部分执行哈希函数,该共同部分不同于哈希模块620使用的数据包的共同部分,来生成哈希值,该哈希值不同于由哈希模块620生成的哈希值。类似于由哈希模块620使用的数据包的共同部分,由哈希模块640使用的数据包的共同部分还包括在所有关联于数据流的数据包上相同的位值,以便由哈希模块640生成的哈希值在所有关联于数据流的数据包上也是相同的。在所有以上结合图6描述的实施例中,一旦哈希模块620配置为生成用于关联于两个或更多不同数据流的数据包的相同哈希值(即,生成相同索引值的不同数据流冲突),哈希模块640可以配置为生成用于关联于不同数据流的数据包的不同的哈希值,以便有关索引值计算的冲突可以被解决,如下面结合图7详细描述的。
在一些实施例中,流高速缓存610,哈希表630,以及哈希表650可以在流模块600的存储器中实现,其中存储器可以是,例如随机访问存储器(RAM)(例如,动态RAM,和静态RAM),闪存,可移除存储器,和/或等等。在一些实施例中,哈希表630可以配置为存储关联于一个或多个数据流的一个或多个流状态值(例如,数据包计数器,数据包大小计数器)。关联于数据流的每个流状态值的存储位置可以由索引值识别,其可以由哈希模块620基于关联于数据流的数据包的一部分确定为哈希值。例如,如图6所示,一个或多个数据包计数器,每个分别表示唯一的数据流,可以被存储在哈希表630的条目(例如,A,B,C,D,E,F)中。数据包计数器的每个条目可以由索引值识别,其由哈希模块620基于关联于对应的数据流的数据包的一部分确定为哈希值。
在一些实施例中,哈希表650可以配置为存储一个或多个条目(例如,索引值),每个表示唯一的数据流。类似于哈希表630,关联于数据流的每个条目的存储位置可以由索引值识别,其可以由哈希模块640基于关联于数据流的数据包的一部分确定为哈希值。例如,如图6所示,一个或多个索引值,每个分别表示唯一的数据流,可以被存储在哈希表650的条目中(例如,J,K,L,M,N,O)。条目中的每个索引值可以被哈希模块640基于关联于对应的数据流的数据包的一部分确定为哈希值。
此外,在一些实施例中,关联于存储在哈希表630中的一个或多个流状态值的每个数据流还与存储在哈希表650中的条目关联,并且反之亦然。例如,如图6所示,六个数据包计数器,每个表示唯一的数据流,被分别存储在哈希表630的六个条目A,B,C,D,E,F中。与此同时,六个索引值,每个表示相同的六个数据流中的一个,被存储在哈希表650中的六个条目J,K,L,M,N,O中。在这种实施例中,关联于存储在哈希表630中的流状态值的每个数据流还可以由哈希表650中存储的一个条目识别。
类似于哈希表630,流高速缓存610可以配置为存储关联于一个或多个数据流的一个或多个流状态值(例如,数据包计数器,数据包大小计数器)。关联于数据流的每个流状态值的存储位置可以由索引值识别,其基于关联于数据流的数据包的一部分来计算。在一些实施例中,索引值可以基于关联于数据流的数据包的共同部分来计算,其包括在数据流的所有数据包上相同的源标识符和/或目的地标识符。在一些实施例中,索引值可以由哈希函数计算,其不同于哈希模块620中执行的哈希函数或哈希模块640中执行的哈希函数。在这种实施例中,流高速缓存610使用的索引值不同于哈希表630所用的索引值(即,哈希模块620产生的哈希值)或哈希表650所用的索引值(即,哈希模块640生成的哈希值)。
在一些实施例中,如结合图7详细描述的,流高速缓存610,哈希模块620,哈希模块640,哈希表630,以及哈希表650可以配置为一起解决有关用于多个数据流的索引值计算的冲突。特别地,哈希模块620可以生成用于每个唯一的数据流的索引值(例如哈希值)。一旦由哈希模块620生成的用于两个或以上的数据流的索引值相同,仅仅一个数据流可以关联于哈希表630。也就是说,仅仅一个数据流的流状态值可以被存储在哈希表630中,并且由索引值识别。此外,由哈希模块640生成的用于特定数据流的不同哈希值可以被存储在哈希表650中。与此同时,具有和特定数据流同样的索引值的其他数据流的流状态值可以被存储在流高速缓存610中,并且由对于每个唯一的数据流都不同的索引值识别。因此,每个唯一的数据流的流状态值可以唯一地在流高速缓存610或哈希表630中的一个或多个存储位置中被识别。
在一些实施例中,流模块600可以配置为定义,删除,和/或修改(例如,增加,减少)存储在流高速缓存610、哈希表630、以及哈希表650中的数据条目。例如,流模块600可以配置为定义一个新的条目(其表示关联于流高速缓存610中的数据流的数据包计数器),并且初始化该数据包计数器为一个初始值(例如,零)。对于另一个例子,流模块600可以配置为增加关联于存储在哈希表630中的数据流的数据包大小计数器,以响应于接收到数据流的新的数据包。对于还一个例子,流模块600可以配置为从哈希表630删除关联于数据流的数据包计数器的条目,以响应于数据包计数器被减少到一个预定的数据包数量阈值(例如,零)。相应地,流模块600配置为从哈希表650删除关联于数据流的索引值的条目。
图7是根据一实施例的流程图,举例说明了一种方法用于确定数据流计数器(例如,数据包计数器,数据包大小计数器)被存储的存储器位置,并基于接收的数据包更新数据流计数器。在702,数据包可以在交换设备接收。特别地,数据包可以在交换设备的流模块(例如,图6所示的流模块600)接收。数据包可以关联于起始于源设备且去往目的地设备的数据流。如以上结合图3详细描述的,例如,数据包可以在交换设备(例如,交换器300)的输入端口(例如,输入端口302)接收且接着转发到交换设备的流模块(例如,流模块310)。
在704,可以确定已接收的数据包的标识符是否关联于流高速缓存中的数据流计数器的条目。在一些实施例中,已接收的数据包的标识符可以是以上结合图5详细描述的数据流ID。也就是,流模块可以配置为基于数据流的已接收的数据包的一部分,生成用于已接收的数据包的(或等同地说,用于包括已接收数据包的数据流的)索引值,所述部分包括数据流的源标识符和/或目的地标识符。流模块可以配置为确定生成的索引值是否可被用来识别关联于流高速缓存中的数据流的数据流计数器(例如,数据包计数器,数据包大小计数器)的条目。例如,如图6所示,流模块600可以配置为基于数据包的包括数据流的源标识符和/或目的地标识符的部分,生成用于数据流的已接收数据包的索引值。流模块600可以被配置为确定已生成的索引值是否可以用来识别用于流高速缓存610中的数据流的数据包计数器。
在706,如果已接收数据包的标识符被确定为不关联于流高速缓存中的数据流计数器的条目,哈希值1可以被计算用于已接收的数据包。特别地,哈希值1可以由流模块中的第一哈希模块基于数据流的接收到的数据包的共同部分(例如,数据头部分)来计算,该部分包括在数据流的所有数据包上的相同的位值。例如,如以上结合图6详细描述的,哈希模块620可以配置为基于关联于数据流的已接收的数据包的数据头的L2部分来计算哈希值1。数据头的L2部分包括相同的位值(或比特值,bitvalue),其表示在数据流的所有数据包上相同的源标识符和/或相同的目的地标识符。结果是,计算出的哈希值1在数据流的所有数据包上相同。因此,这种哈希值1可以用作为索引值来识别哈希表630的存储位置,关联于数据流的流状态值(例如,数据包计数器,数据包大小计数器)在那里被存储。
在708,确定已接收的数据包的哈希值1是否关联于哈希表1中的条目。特别地,流模块可以配置为确定哈希值1是否可用作为索引值来识别哈希表1中的至少一个存储位置,关联于数据流的流状态值(例如,数据包计数器,数据包大小计数器)在那里被存储。例如,如以上结合图6详细描述的,流模块600可以配置为确定由哈希模块620计算的哈希值1是否可以用作为索引值来识别哈希表630中的存储位置,用于数据流的数据包计数器在那里被存储。
在710,如果哈希值1被确定为不关联于哈希表1中的任何条目,关联于数据流的数据流计数器(例如,数据包计数器,数据包大小计数器)的新条目可以在哈希表1中被定义并初始化。特别地,流模块可以配置为在哈希表1中定义新的数据流计数器,其被哈希值1索引,以便数据流计数器关联于包括已接收数据包的数据流。此外,数据流计数器可以被初始化为一个初始值(例如,零)。例如,如以上结合图6详细描述的,如果已接收的数据包的哈希值1被确定为不关联于哈希表630中的任何条目,流模块600可以配置为在哈希表630中定义包括所接收的数据包的数据流的数据包计数器的新条目,并进一步初始化该数据包计数器为零。
在712,当在哈希表1中定义新的条目之后,哈希值2可以被确定用于已接收的数据包,并且在哈希表2中可以定义包括所接收的数据包的数据流的新条目。特别地,哈希值2可以由流模块中的第二哈希模块(不同于第一哈希模块)基于数据流的接收到数据包的共同部分(例如,数据头部分)来计算,所述共同部分包括在数据流的所有数据包上相同的位值。此外,流模块可以配置为定义一个新的条目,其表示哈希表2中的数据流,它可以由哈希值2来索引。例如,如以上结合图6的描述,当用于包括已接收的数据包的数据流的数据包计数器的新条目在哈希表630中被定义之后,哈希模块640可以配置为基于已接收数据包的数据头的L2部分计算哈希值2。此外,流模块600可以配置为在哈希表650中定义包括哈希值2的新的条目,以便新的条目可用来表示包括已接收数据包的特定数据流。此外,这种新的条目可以由哈希值2识别。
回到708,如果哈希值1被确定为关联于哈希表1中至少一个条目,在714可以为已接收的数据包确定哈希值2。特别地,如果用于包括已接收数据包的数据流的哈希值1被确定为关联于哈希表1中的条目,这种结果指示包括已接收数据包的数据流或者是关联于存储在哈希表1中的条目的相同数据流,或者是产生与关联于存储在哈希表1中的条目的数据流相同的哈希值1的不同数据流。用于包括已接收数据包的数据流的哈希值2可以被用来区别这两种情况,如下面随后步骤中详细描述的。如图6中例子所示,如果由哈希模块620计算的哈希值1被确定为关联于存储在哈希表630中的数据包计数器,哈希模块640可以配置为基于已接收数据包的数据头的L2部分来计算哈希值2。
在716,可以确定已接收的数据包的哈希值2是否关联于哈希表2中的条目。特别地,流模块可以配置为确定哈希值2是否可以用作为索引值来识别哈希表2中的存储位置,用于包括已接收数据包的数据流的标识在该存储位置被存储。在一些实施例中,用于数据流的标识可以是为数据流计算的哈希值2。如图6的例子所示,流模块600可以配置为确定由哈希模块640计算的哈希值2是否可以用来识别哈希表650中的存储位置,用于包括已接收数据包的数据流的哈希值2在该存储位置被存储。
在718,如果存储在哈希表1中的数据流计数器(例如,数据包计数器,数据包大小计数器)可以被确定为关联于包括已接收数据包的数据流,该数据流计数器可以被相应地增加。特别地,如果用于包括已接收数据包的数据流的哈希值2被确定为关联于哈希表2中的条目(例如,包括在条目中)(在716示出),或在哈希表2中新定义了关联于数据流的哈希值2的条目(在712示出),这种结果指示该数据流是与关联于存储在哈希表1中的数据流计数器的数据流相同的数据流,其由数据流的哈希值1索引。因此,流模块可以配置为相应地增加关联于存储在哈希表1中的数据流的数据流计数器,以响应于接收到数据流的数据包。例如,如图6所示,如果由哈希模块640生成的包括已接收数据包的数据流的哈希值2在哈希表650中被识别,它表示该数据流与关联于哈希表630中存储的数据包计数器的数据流是相同的,其由哈希模块620生成的数据流的哈希值1来索引。结果是,流模块600可以配置为响应于接收到数据流的数据包而将数据包计数器增加1。
回到716,如果用于包括已接收数据包的数据流的哈希值2被确定为不关联于哈希表2中的任何条目,在720,关联于数据流的数据流计数器(例如,数据包计数器,数据包大小计数器)的新条目可以在流高速缓存中被定义,并被初始化为初始值(例如,零)。特别地,如果用于包括已接收数据包的数据流的哈希值2被确定为不关联于哈希表2中的任何条目(例如,没有包括在条目中),这种结果表示该数据流不同于关联于存储在哈希表1中的数据流计数器的数据流,其由哈希值1索引,尽管为包括已接收数据包的数据流生成了同样的哈希值1。结果是,流模块可以配置为在流高速缓存中定义关联于包括所接收的数据包的数据流的数据流计数器的新条目,并且进一步初始化该数据流计数器为一个初始值(例如,零)。例如,如图6所示,如果由哈希模块640基于已接收数据包生成的哈希值2不能被识别为哈希表650中的条目,这种结果表示存储在哈希表630中的数据包计数器(它由哈希模块620基于已接收数据包生成的哈希值1索引)不关联于包括所接收的数据包的数据流。结果是,流模块600配置为在流高速缓存610中定义关联于具有已接收数据包的数据流的新数据包计数器,并将其初始化为零。
在722,如果存储在流高速缓存中的数据流计数器(例如,数据包计数器,数据包大小计数器)被确定为关联于包括所接收的数据包的数据流,数据流计数器可以被相应地增加。特别地,如果关联于包括已接收数据包的数据流的数据流计数器的新条目在流高速缓存中被定义(在720示出),或者已接收数据包的标识符被确定为关联于流高速缓存中存在的数据流计数器(在704示出),流模块可配置为相应地增加数据流计数器,以响应于接收到数据流的数据包。例如,如图6所示,如果存储在流高速缓存610的数据包计数器被确定为关联于具有已接收数据包的数据流,流模块600可以配置为将数据包计数器增大1,以响应于接收到数据流的数据包。
在724,当存储在哈希表1(在718示出)或流高速缓存(在722示出)中的关联于数据流的数据流计数器(例如,数据包计数器,数据包大小计数器)响应于接收到数据流的数据包而被增加之后,流模块可以等候下一个数据包。此外,接收到下一个数据包之后,流模块可以配置为对所接收的数据包重复操作702-722。例如,如图6所示,当响应于接收到数据流的数据包而将存储在哈希表630或流高速缓存610中的关联于数据流的数据包计数器为增大1之后,流模块600等候下一个数据包。接收一个新的数据包之后,流模块600配置为对新接收的数据包重复已经对之前的数据包执行的操作702-722。
这里描述的一些实施例中涉及具有计算机可读媒介(也被称为处理器可读媒介)的计算机存储产品,其上具有用于执行各种计算机执行操作的指令或计算机代码。媒介和计算机代码(也被称为代码)可以是用于专用目的或多个目的的设计和结构。计算机可读媒介的例子包括,但是不限于:磁性存储媒介例如硬盘,软盘,以及磁带;光学存储媒介例如激光唱片/数字视频盘(CD/DVD),只读光盘存储器(CD-ROM),以及全息设备;磁光盘存储媒介例如光盘;载波信号处理模块;以及特别配置为存储和执行程序代码的硬件设备,例如特定用途集成电路(ASIC),可编程逻辑电路(PLD),以及只读存储器(ROM)和RAM设备。
计算机代码的例子包括,但不局限于,微码或微指令,例如由编译器生成的机器指令,用于生成web服务的代码,以及包括利用注释器由计算机执行的高水平指令文件。例如,实施例可以被执行利用Java,C++,或其他编程语言(例如,面向对象的编程语言)以及开发工具。计算机代码的其他例子包括,但是不局限于,控制信号,加密代码,以及压缩代码。
尽管上面已经描述的各种实施例,可以理解的是已经通过例子的方式来公开,不限于,并且可以在形式上实施各种不同的改变。这里描述的装置和/或方法的任何部分可以通过任何组合来结合,除了相互排斥的组合。这里描述的实施例可以包括各种不同的功能组合和/或子组合,描述的不同实施例的组件和/或要素。
尽管以上结合图2示出和描述了存储器240被实现为一个存储库,在其他实施例中,存储器240可以实现为芯片上或芯片外的存储器的多个库。例如,存储器240可以实现为四个存储库240a,240b,240c和240d。存储器240的库可以配置为一起存储单独一个流表或多个分离的流表。在一些实施例中,两个或更多的存储库240a,240b,240c和240d可以是相同大小的,或不同大小的。
类似地,如以上结合图2示出和描述的一个例子,流模块200包括流状态提高模块210的一个例子以及流状态计时模块220的一个实例,但是在其他实施例中,流状态计时模块220的一个或多个例子可以用来减少存储器240的一个或多个库中的流条目,以及流状态提高模块210的一个或多个例子可以用来减少存储器240的一个或多个库中的流条目。相应地,第一个流状态提高模块可以配置为增加关联于流表的第一部分的流状态值,以及第二流状态提高模块可以配置为增加关联于流表的第二部分的流状态值,该第二部分与流表的第一部分不同。在一些实施例中,第一流状态提高模块,以及第二流状态提高模块可以配置为在同时的/平行的(或不同的/串行的)时段期间操作。类似地,第一流状态计时模块可以配置为减少关联于流表的第一部分的流状态值,以及第二流状态计时模块可以配置为减少关联于流表的第二部分的流状态值,该第二部分与流表的第一部分不同。在一些实施例中,第一流状态计时模块,以及第二流状态计时模块可以配置为在并发的/平行的(或不同的/串行的)时间周期期间操作。如果流表是相对大和/或对于单独的流状态提高模块和/或单独的流状态计时模块是不可管理的(例如,从计时的观点不可管理)(如图2所示),则以这种形式将流表(其可以包括好几千万个流条目(或潜在的流条目))划分到不同的存储库是令人满意的。此外,在一些实施例中,单独的流状态提高模块(例如流状态提高模块210)可以特别地被指定给(例如,用于)且配置为增加大于存储器240的四个库中的一个中的流条目的状态。类似地,分离的流状态计时模块(例如流状态计时模块220)可以被指定给(例如,用于)且配置为减少大于存储器240的四个库中的一个中的流条目的状态。
尽管以上结合图1、图2和图4A示出和描述了包括平均带宽计数器的流状态值,在其他实施例中,交换设备还可以实现一个或多个移动平均带宽计数器作为关联于一个或多个数据流的流状态值。特别地,用于数据流的移动平均带宽计数器记录了由在流模块处在固定的时间数量的移动时段(例如,在过去10分钟,在过去1小时)中接收的数据流的数据报占用的移动平均带宽。这种移动平均带宽可以基于在流模块上接收的数据流的新数据包的大小以及在接收数据流的数据包和接收之前最近数据包之间的时间数量而被更新(例如,修改)。
Claims (20)
1.一种用于追踪数据包流的装置,包括:
开关设备,包括存储器和操作地耦合到所述存储器的处理器,所述处理器被配置成执行流模块;并且
所述流模块被配置成确定包括在数据包中的数据流标识符不与流缓存中的条目匹配,
所述流模块被配置成:响应于包括在所述数据包中的所述数据流标识符不与所述流缓存中的条目匹配的确定,确定基于所述数据包的头部分的第一哈希值与第一哈希表中的条目匹配,
所述流模块被配置成:响应于基于所述数据包的所述头部分的所述第一哈希值与所述第一哈希表中的条目匹配的确定,计算基于所述数据包的所述头部分的第二哈希值,
所述流模块被配置成:当所述第二哈希值与第二哈希表中的条目匹配时,增加在所述第一哈希表中的并且与第一数据流关联的数据流计数器,
所述流模块被配置成:当所述第二哈希值不与所述第二哈希表中的条目匹配时,在所述第二哈希表中定义条目和数据流计数器并且两者均与第二数据流关联。
2.根据权利要求1所述的装置,其中:
在所述第二哈希表中的所述数据流计数器是数据包计数器,
当所述第二哈希值不与所述第二哈希表中的条目匹配时,所述数据包计数器被配置成响应于接收所述数据包而被增加。
3.根据权利要求1所述的装置,其中:
在所述第一哈希表中的所述数据流计数器是数据包计数器,
当所述第二哈希值与第二哈希表中的条目匹配时,所述数据包计数器被配置成响应于接收所述数据包而被增加。
4.根据权利要求1所述的装置,其中:
在所述第二哈希表中的所述数据流计数器是数据包大小计数器,
当所述第二哈希值不与所述第二哈希表中的条目匹配时,所述数据包大小计数器被配置成被增加与所述数据包的大小关联的量。
5.根据权利要求1所述的装置,其中:
在所述第一哈希表中的所述数据流计数器是数据包大小计数器,
当所述第二哈希值与第二哈希表中的条目匹配时,所述数据包大小计数器被配置成被增加与所述数据包的大小关联的量。
6.根据权利要求1所述的装置,其中:
在所述第二哈希表中的所述数据流计数器是移动平均带宽计数器,当所述第二哈希值不与所述第二哈希表中的条目匹配时,所述移动平均带宽计数器被配置成基于所述数据包的大小以及在接受所述数据包与接收之前最近的数据包之间的时间量而被修改,所述之前最近的数据包与所述数据包具有共同源标识符和共同目的地标识符。
7.根据权利要求1所述的装置,其中:
在所述第一哈希表中的所述数据流计数器是移动平均带宽计数器,
当所述第二哈希值与第二哈希表中的条目匹配时,所述移动平均带宽计数器被配置成基于所述数据包的大小以及在接受所述数据包与接收之前最近的数据包之间的时间量而被修改,所述之前最近的数据包与所述数据包具有共同源标识符和共同目的地标识符。
8.根据权利要求1所述的装置,其中:
所述流模块被配置成通过增大或减小所述第一哈希表中的所述数据流计数器的值而修改所述第一哈希表中的所述数据流计数器;并且
所述流模块被配置成通过增大或减小所述第二哈希表中的所述数据流计数器的值而修改所述第二哈希表中的所述数据流计数器。
9.一种用于追踪数据包流的方法,包括:
确定包括在数据包中的数据流标识符不与流缓存中的条目匹配,
响应于包括在所述数据包中的所述数据流标识符不与所述流缓存中的条目匹配的确定,确定基于所述数据包的头部分的第一哈希值与第一哈希表中的条目匹配,
响应于基于所述数据包的所述头部分的所述第一哈希值与所述第一哈希表中的条目匹配的确定,计算基于所述数据包的所述头部分的第二哈希值,
当所述第二哈希值与第二哈希表中的条目匹配时,增加在所述第一哈希表中的并且与第一数据流关联的数据流计数器,
当所述第二哈希值不与所述第二哈希表中的条目匹配时,在所述第二哈希表中定义条目和数据流计数器并且两者均与第二数据流关联。
10.根据权利要求8所述的方法,进一步包括:
通过增大或减小所述第一哈希表中的所述数据流计数器的值而修改所述第一哈希表中的所述数据流计数器;并且
通过增大或减小所述第二哈希表中的所述数据流计数器的值而修改所述第二哈希表中的所述数据流计数器。
11.根据权利要求8的方法,其中:
在所述第二哈希表中的所述数据流计数器是数据包计数器,
当所述第二哈希值不与所述第二哈希表中的条目匹配时,所述数据包计数器被配置成响应于接收所述数据包而被增加。
12.根据权利要求8所述的方法,其中:
在所述第一哈希表中的所述数据流计数器是数据包计数器,
当所述第二哈希值与第二哈希表中的条目匹配时,所述数据包计数器被配置成响应于接收所述数据包而被增加。
13.根据权利要求8的方法,其中:
在所述第二哈希表中的所述数据流计数器是数据包大小计数器,
当所述第二哈希值不与所述第二哈希表中的条目匹配时,所述数据包大小计数器被配置成被增加与所述数据包的大小关联的量。
14.根据权利要求8的方法,其中:
在所述第一哈希表中的所述数据流计数器是数据包大小计数器,
当所述第二哈希值与第二哈希表中的条目匹配时,所述数据包大小计数器被配置成被增加与所述数据包的大小关联的量。
15.根据权利要求8的方法,其中:
在所述第二哈希表中的所述数据流计数器是移动平均带宽计数器,
当所述第二哈希值不与所述第二哈希表中的条目匹配时,所述移动平均带宽计数器被配置成基于所述数据包的大小以及在接受所述数据包与接收之前最近的数据包之间的时间量而被修改,所述之前最近的数据包与所述数据包具有共同源标识符和共同目的地标识符。
16.一种用于追踪数据包流的方法,包括:
确定包括在数据包中的数据流标识符不与流缓存中和数据流关联的条目匹配;以及
当基于包括在所述数据包中的所述数据流标识符不与所述流缓存中和所述数据流关联的条目匹配的确定,基于所述数据包的头部分的第一哈希值不与第一哈希表中的条目匹配时:
定义与所述数据流关联的所述第一哈希表中的条目;
定义与所述数据流关联的所述第一哈希表中的数据流计数器;
定义与所述数据流关联的第二哈希表中的条目;以及
增加所述第一哈希表中的所述数据流计数器。
17.根据权利要求15所述的方法,其中所述数据包是第一数据包,所述代码进一步包括以下代码:
确定包括在第二数据包中的数据流标识符与流缓存中和数据流关联的条目匹配;以及
增加所述流缓存中的数据流计数器。
18.根据权利要求15所述的方法,所述代码进一步包括通过增大或减小所述第一哈希表中的所述数据流计数器的值而修改所述第一哈希表中的所述数据流计数器的代码。
19.根据权利要求15的方法,其中:
在所述第一哈希表中的所述数据流计数器是数据包大小计数器,
所述数据包大小计数器被配置成被增加与所述数据包的大小关联的量。
20.根据权利要求15的方法,其中:
在所述第一哈希表中的所述数据流计数器是移动平均带宽计数器,
所述移动平均带宽计数器被配置成基于所述数据包的大小以及在接受所述数据包与接收之前最近的数据包之间的时间量而被修改,所述之前最近的数据包与所述数据包具有共同源标识符和共同目的地标识符。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/044,023 US9032089B2 (en) | 2011-03-09 | 2011-03-09 | Methods and apparatus for path selection within a network based on flow duration |
US13/044,023 | 2011-03-09 | ||
CN201210228495.4A CN102769565B (zh) | 2011-03-09 | 2012-03-09 | 基于流持续时间的用于网络中路径选择的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210228495.4A Division CN102769565B (zh) | 2011-03-09 | 2012-03-09 | 基于流持续时间的用于网络中路径选择的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105227485A true CN105227485A (zh) | 2016-01-06 |
CN105227485B CN105227485B (zh) | 2018-07-13 |
Family
ID=45808279
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210228495.4A Active CN102769565B (zh) | 2011-03-09 | 2012-03-09 | 基于流持续时间的用于网络中路径选择的方法和装置 |
CN201510744550.9A Active CN105227485B (zh) | 2011-03-09 | 2012-03-09 | 基于流持续时间的用于网络中路径选择的方法和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210228495.4A Active CN102769565B (zh) | 2011-03-09 | 2012-03-09 | 基于流持续时间的用于网络中路径选择的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9032089B2 (zh) |
EP (2) | EP2993837B1 (zh) |
CN (2) | CN102769565B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117792992A (zh) * | 2024-02-28 | 2024-03-29 | 鹏城实验室 | 数据传输路径控制方法、装置、介质及设备 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8218442B2 (en) | 2008-09-11 | 2012-07-10 | Juniper Networks, Inc. | Methods and apparatus for flow-controllable multi-staged queues |
US8254255B2 (en) | 2008-12-29 | 2012-08-28 | Juniper Networks, Inc. | Flow-control in a switch fabric |
US9065773B2 (en) | 2010-06-22 | 2015-06-23 | Juniper Networks, Inc. | Methods and apparatus for virtual channel flow control associated with a switch fabric |
US9660940B2 (en) | 2010-12-01 | 2017-05-23 | Juniper Networks, Inc. | Methods and apparatus for flow control associated with a switch fabric |
US9032089B2 (en) | 2011-03-09 | 2015-05-12 | Juniper Networks, Inc. | Methods and apparatus for path selection within a network based on flow duration |
US8811183B1 (en) | 2011-10-04 | 2014-08-19 | Juniper Networks, Inc. | Methods and apparatus for multi-path flow control within a multi-stage switch fabric |
US8886827B2 (en) * | 2012-02-13 | 2014-11-11 | Juniper Networks, Inc. | Flow cache mechanism for performing packet flow lookups in a network device |
US9628398B1 (en) | 2012-02-28 | 2017-04-18 | Marvell Israel (M.I.S.L) Ltd. | Queuing methods and apparatus in a network device |
US9253019B1 (en) | 2012-03-09 | 2016-02-02 | Juniper Networks, Inc. | Fault tolerance for authentication, authorization, and accounting (AAA) functionality |
US8984206B2 (en) | 2012-10-31 | 2015-03-17 | International Business Machines Corporation | Weightage-based scheduling for hierarchical switching fabrics |
CN104871499B (zh) * | 2012-12-19 | 2018-10-26 | 日本电气株式会社 | 通信节点、控制装置以及控制信息条目的管理方法 |
US8902899B2 (en) * | 2013-02-08 | 2014-12-02 | International Business Machines Corporation | Input buffered switching device including bypass logic |
CA2912938C (en) | 2013-06-13 | 2021-06-01 | Tsx Inc. | Low latency device interconnect using remote memory access with segmented queues |
US9160650B2 (en) * | 2013-06-17 | 2015-10-13 | Futurewei Technologies, Inc. | Enhanced flow entry table cache replacement in a software-defined networking switch |
US9288157B2 (en) * | 2013-10-15 | 2016-03-15 | National Instruments Corporation | Time-sensitive switch for scheduled data egress |
US9548924B2 (en) | 2013-12-09 | 2017-01-17 | Nicira, Inc. | Detecting an elephant flow based on the size of a packet |
US9967199B2 (en) * | 2013-12-09 | 2018-05-08 | Nicira, Inc. | Inspecting operations of a machine to detect elephant flows |
US9467396B2 (en) | 2014-04-11 | 2016-10-11 | International Business Machines Corporation | Simultaneous transfers from a single input link to multiple output links with a timesliced crossbar |
US10721160B2 (en) * | 2014-05-15 | 2020-07-21 | Samsung Electronics Co., Ltd. | Method of distributing data and device supporting the same |
US9608938B2 (en) * | 2014-08-12 | 2017-03-28 | Arista Networks, Inc. | Method and system for tracking and managing network flows |
CN105704052A (zh) * | 2014-11-27 | 2016-06-22 | 华为技术有限公司 | 一种量化的拥塞通告消息生成方法及装置 |
US10284470B2 (en) * | 2014-12-23 | 2019-05-07 | Intel Corporation | Technologies for network device flow lookup management |
US9871748B2 (en) * | 2015-12-09 | 2018-01-16 | 128 Technology, Inc. | Router with optimized statistical functionality |
US10075965B2 (en) * | 2016-04-06 | 2018-09-11 | P2 Solutions Limited | Apparatus and method for detecting and alleviating unfairness in wireless network |
US10103992B1 (en) * | 2016-06-27 | 2018-10-16 | Amazon Technologies, Inc. | Network traffic load balancing using rotating hash |
US9992094B1 (en) | 2016-06-27 | 2018-06-05 | Amazon Technologies, Inc. | Adaptive forwarding tables |
US10182017B2 (en) | 2016-06-30 | 2019-01-15 | Mellanox Technologies Tlv Ltd. | Estimating multiple distinct-flow counts in parallel |
US10574546B2 (en) | 2016-09-27 | 2020-02-25 | Mellanox Technologies Tlv Ltd. | Network monitoring using selective mirroring |
US10498612B2 (en) * | 2016-09-27 | 2019-12-03 | Mellanox Technologies Tlv Ltd. | Multi-stage selective mirroring |
US10218642B2 (en) * | 2017-03-27 | 2019-02-26 | Mellanox Technologies Tlv Ltd. | Switch arbitration based on distinct-flow counts |
US20180331963A1 (en) * | 2017-05-12 | 2018-11-15 | Guavus, Inc. | Determining data flows to an ingress router with data flows received at an egress router |
WO2018213202A1 (en) * | 2017-05-15 | 2018-11-22 | Marks Roger B | Flow-zone switching |
JP7251060B2 (ja) * | 2018-03-07 | 2023-04-04 | 富士通株式会社 | 情報処理装置、情報処理システム及び情報処理プログラム |
US10880206B2 (en) * | 2018-06-13 | 2020-12-29 | Futurewei Technologies, Inc. | Multipath selection system and method for datacenter-centric metro networks |
US12034633B2 (en) * | 2019-05-23 | 2024-07-09 | Hewlett Packard Enterprise Development Lp | System and method for facilitating tracer packets in a data-driven intelligent network |
WO2021012902A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 一种处理网络拥塞的方法以及相关装置 |
US11356368B2 (en) * | 2019-11-01 | 2022-06-07 | Arista Networks, Inc. | Pinning bi-directional network traffic to a service device |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US12034637B1 (en) * | 2021-12-10 | 2024-07-09 | Amazon Technologies, Inc. | Network devices for stateful transmission of network traffic |
US12081437B2 (en) * | 2022-01-12 | 2024-09-03 | VMware LLC | Probabilistic filters for use in network forwarding and services |
US12058016B2 (en) * | 2022-01-27 | 2024-08-06 | Avago Technologies International Sales Pte. Limited | Feature extraction for inline network analysis |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060092833A1 (en) * | 2004-11-02 | 2006-05-04 | Bemmel Jeroen V | Congestion control for improved management of service level agreements in switched networks |
CN101031876A (zh) * | 2004-08-24 | 2007-09-05 | 华盛顿大学 | 用可重新配置硬件进行内容检测的方法和系统 |
EP2040420A1 (en) * | 2007-09-20 | 2009-03-25 | Lucent Technologies Inc. | Method and device for shaping a stream of frames of user traffic, as well as computer network |
CN101431474A (zh) * | 2007-11-07 | 2009-05-13 | 丛林网络公司 | 用于流监控的系统和方法 |
CN101729402A (zh) * | 2008-10-24 | 2010-06-09 | 丛林网络公司 | 流相容的动态负荷平衡 |
Family Cites Families (134)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457687A (en) | 1993-09-02 | 1995-10-10 | Network Equipment Technologies, Inc. | Method and apparatus for backward explicit congestion notification (BECN) in an ATM network |
US5521913A (en) | 1994-09-12 | 1996-05-28 | Amber Wave Systems, Inc. | Distributed processing ethernet switch with adaptive cut-through switching |
WO1997004546A1 (en) | 1995-07-19 | 1997-02-06 | Fujitsu Network Communications, Inc. | Method and apparatus for reducing information loss in a communications network |
US5991295A (en) | 1995-10-10 | 1999-11-23 | Madge Networks Limited | Digital switch |
GB9618137D0 (en) | 1996-08-30 | 1996-10-09 | Sgs Thomson Microelectronics | Improvements in or relating to an ATM switch |
US6049546A (en) | 1996-10-15 | 2000-04-11 | At&T Corporation | System and method for performing switching in multipoint-to-multipoint multicasting |
US5987028A (en) | 1997-05-12 | 1999-11-16 | Industrial Technology Research Insitute | Multiple channel ATM switch |
US6370145B1 (en) | 1997-08-22 | 2002-04-09 | Avici Systems | Internet switch router |
US6324165B1 (en) | 1997-09-05 | 2001-11-27 | Nec Usa, Inc. | Large capacity, multiclass core ATM switch architecture |
US6073089A (en) | 1997-10-22 | 2000-06-06 | Baker; Michelle | Systems and methods for adaptive profiling, fault detection, and alert generation in a changing environment which is measurable by at least two different measures of state |
US6512747B1 (en) | 1998-03-05 | 2003-01-28 | Nippon Telegraph And Telephone Corporation | ATM transmission system |
JP3650262B2 (ja) | 1998-03-20 | 2005-05-18 | 富士通株式会社 | セルの転送レート制御装置およびその方法 |
US6570850B1 (en) | 1998-04-23 | 2003-05-27 | Giganet, Inc. | System and method for regulating message flow in a digital data network |
US6618357B1 (en) | 1998-11-05 | 2003-09-09 | International Business Machines Corporation | Queue management for networks employing pause time based flow control |
US7046631B1 (en) | 1999-01-22 | 2006-05-16 | Alcatel Canada Inc. | Method and apparatus for provisioning traffic dedicated cores in a connection oriented network |
US6389468B1 (en) * | 1999-03-01 | 2002-05-14 | Sun Microsystems, Inc. | Method and apparatus for distributing network traffic processing on a multiprocessor computer |
US6621828B1 (en) | 1999-12-01 | 2003-09-16 | Cisco Technology, Inc. | Fused switch core and method for a telecommunications node |
US7027457B1 (en) | 1999-12-03 | 2006-04-11 | Agere Systems Inc. | Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches |
US6798746B1 (en) * | 1999-12-18 | 2004-09-28 | Cisco Technology, Inc. | Method and apparatus for implementing a quality of service policy in a data communications network |
US7324442B1 (en) | 2000-02-28 | 2008-01-29 | The Board Of Trustees Of The Leland Stanford Junior University | Active queue management toward fair bandwidth allocation |
EP1133110B1 (en) | 2000-03-06 | 2006-06-21 | International Business Machines Corporation | Switching device and method |
GB0005899D0 (en) | 2000-03-10 | 2000-05-03 | British Telecomm | Packet switching |
US6944173B1 (en) | 2000-03-27 | 2005-09-13 | Hewlett-Packard Development Company, L.P. | Method and system for transmitting data between a receiver and a transmitter |
GB2361139B (en) | 2000-04-04 | 2003-07-09 | 3Com Corp | Flow control system for ethernet network devices |
US6657962B1 (en) | 2000-04-10 | 2003-12-02 | International Business Machines Corporation | Method and system for managing congestion in a network |
US6574195B2 (en) | 2000-04-19 | 2003-06-03 | Caspian Networks, Inc. | Micro-flow management |
US7269666B1 (en) | 2000-06-30 | 2007-09-11 | Intel Corporation | Memory utilization in a network interface |
FI114749B (fi) | 2000-09-11 | 2004-12-15 | Nokia Corp | Poikkeamien ilmaisujärjestelmä ja menetelmä sen opettamiseksi |
US6665495B1 (en) | 2000-10-27 | 2003-12-16 | Yotta Networks, Inc. | Non-blocking, scalable optical router architecture and method for routing optical traffic |
AU2002232481A1 (en) | 2000-11-07 | 2002-05-21 | Fast-Chip, Inc. | Switch-based network processor |
US7173931B2 (en) | 2000-11-20 | 2007-02-06 | Hung-Hsiang Jonathan Chao | Scheduling the dispatch of cells in multistage switches |
US7420969B2 (en) | 2000-11-29 | 2008-09-02 | Rmi Corporation | Network switch with a parallel shared memory |
WO2002045380A2 (en) | 2000-11-30 | 2002-06-06 | Lancope, Inc. | Flow-based detection of network intrusions |
US6973032B1 (en) | 2000-12-04 | 2005-12-06 | Cisco Technology, Inc. | Selective backpressure control for multistage switches |
JP3526269B2 (ja) | 2000-12-11 | 2004-05-10 | 株式会社東芝 | ネットワーク間中継装置及び該中継装置における転送スケジューリング方法 |
US7161906B2 (en) | 2000-12-15 | 2007-01-09 | Agere Systems Inc. | Three-stage switch fabric with input device features |
US20020118692A1 (en) | 2001-01-04 | 2002-08-29 | Oberman Stuart F. | Ensuring proper packet ordering in a cut-through and early-forwarding network switch |
US7075934B2 (en) | 2001-01-10 | 2006-07-11 | Lucent Technologies Inc. | Method and apparatus for hierarchical bandwidth distribution in a packet network |
US20020167950A1 (en) | 2001-01-12 | 2002-11-14 | Zarlink Semiconductor V.N. Inc. | Fast data path protocol for network switching |
US6856622B1 (en) | 2001-02-20 | 2005-02-15 | Pmc-Sierra, Inc. | Multicast cell scheduling protocol |
US7536455B2 (en) * | 2001-03-18 | 2009-05-19 | At&T Corp. | Optimal combination of sampled measurements |
US7068657B2 (en) | 2001-04-24 | 2006-06-27 | Alcatel | Facilitating inverse multiplexing over asynchronous transfer mode via communication links having disparate data transmission rates |
US8228797B1 (en) | 2001-05-31 | 2012-07-24 | Fujitsu Limited | System and method for providing optimum bandwidth utilization |
US7277429B2 (en) | 2001-06-01 | 2007-10-02 | 4198638 Canada Inc. | Cell-based switch fabric with distributed scheduling |
US20030005145A1 (en) | 2001-06-12 | 2003-01-02 | Qosient Llc | Network service assurance with comparison of flow activity captured outside of a service network with flow activity captured in or at an interface of a service network |
US7042842B2 (en) | 2001-06-13 | 2006-05-09 | Computer Network Technology Corporation | Fiber channel switch |
US7624444B2 (en) | 2001-06-13 | 2009-11-24 | Mcafee, Inc. | Method and apparatus for detecting intrusions on a computer system |
US7167480B1 (en) | 2001-06-21 | 2007-01-23 | Lighthouse Capital Partners Iv, Lp | Multi-service data transport architecture |
US7440448B1 (en) | 2001-07-02 | 2008-10-21 | Haw-Minn Lu | Systems and methods for upgradeable scalable switching |
US20040001433A1 (en) | 2001-07-18 | 2004-01-01 | Gram Charles Andrew | Interactive control of network devices |
US7047303B2 (en) | 2001-07-26 | 2006-05-16 | International Business Machines Corporation | Apparatus and method for using a network processor to guard against a “denial-of-service” attack on a server or server cluster |
US7283556B2 (en) | 2001-07-31 | 2007-10-16 | Nishan Systems, Inc. | Method and system for managing time division multiplexing (TDM) timeslots in a network switch |
US20030026267A1 (en) | 2001-07-31 | 2003-02-06 | Oberman Stuart F. | Virtual channels in a network switch |
US7027404B2 (en) | 2001-08-20 | 2006-04-11 | Samsung Electronics Co., Ltd. | Mechanism for cell routing in a multi-stage fabric with input queuing |
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 |
CA2358038A1 (en) | 2001-09-27 | 2003-03-27 | Alcatel Canada Inc. | System and method for selection of redundant control path links in a multi-shelf network element |
US7512980B2 (en) | 2001-11-30 | 2009-03-31 | Lancope, Inc. | Packet sampling flow-based detection of network intrusions |
US7475426B2 (en) | 2001-11-30 | 2009-01-06 | Lancope, Inc. | Flow-based detection of network intrusions |
US7221652B1 (en) | 2001-12-14 | 2007-05-22 | Applied Micro Circuits Corporation | System and method for tolerating data link faults in communications with a switch fabric |
US7085846B2 (en) | 2001-12-31 | 2006-08-01 | Maxxan Systems, Incorporated | Buffer to buffer credit flow control for computer network |
US6977932B1 (en) | 2002-01-16 | 2005-12-20 | Caspian Networks, Inc. | System and method for network tunneling utilizing micro-flow state information |
US7424744B1 (en) | 2002-03-05 | 2008-09-09 | Mcafee, Inc. | Signature based network intrusion detection system and method |
US7876681B2 (en) | 2002-05-24 | 2011-01-25 | Verizon Business Global Llc | Systems and methods for controlling network-bound traffic |
US20040125815A1 (en) * | 2002-06-24 | 2004-07-01 | Mikio Shimazu | Packet transmission apparatus and method thereof, traffic conditioner, priority control mechanism and packet shaper |
US7180862B2 (en) | 2002-07-18 | 2007-02-20 | Intel Corporation | Apparatus and method for virtual output queue feedback |
US7206861B1 (en) * | 2002-07-29 | 2007-04-17 | Juniper Networks, Inc. | Network traffic distribution across parallel paths |
US6986161B2 (en) | 2002-08-12 | 2006-01-10 | Harris Corporation | Mobile ad-hoc network with intrusion detection features and related methods |
KR100663586B1 (ko) | 2002-08-28 | 2007-01-02 | 삼성전자주식회사 | 헤더 압축에 의한 패킷 데이터의 송신 방법 및 장치 |
US7327680B1 (en) | 2002-11-05 | 2008-02-05 | Cisco Technology, Inc. | Methods and apparatus for network congestion control |
US7372813B1 (en) | 2002-11-26 | 2008-05-13 | Extreme Networks | Virtual load balancing across a network link |
US7539199B2 (en) | 2003-02-21 | 2009-05-26 | Gireesh Shrimali | Switch fabric scheduling with fairness and priority consideration |
US7150044B2 (en) | 2003-03-10 | 2006-12-12 | Mci, Llc | Secure self-organizing and self-provisioning anomalous event detection systems |
CN1531282A (zh) * | 2003-03-12 | 2004-09-22 | ���µ�����ҵ��ʽ���� | 分组中继装置 |
JP4341413B2 (ja) * | 2003-07-11 | 2009-10-07 | 株式会社日立製作所 | 統計収集装置を備えたパケット転送装置および統計収集方法 |
US7430175B2 (en) | 2003-07-21 | 2008-09-30 | Qlogic, Corporation | Method and system for managing traffic in fibre channel systems |
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 |
US7266754B2 (en) * | 2003-08-14 | 2007-09-04 | Cisco Technology, Inc. | Detecting network denial of service attacks |
EP1668928A1 (en) | 2003-09-29 | 2006-06-14 | BRITISH TELECOMMUNICATIONS public limited company | Matching process |
US20080028096A1 (en) | 2003-10-21 | 2008-01-31 | Henderson Alex E | Transporting fibre channel over ethernet |
US20050108444A1 (en) | 2003-11-19 | 2005-05-19 | Flauaus Gary R. | Method of detecting and monitoring fabric congestion |
US9270643B2 (en) | 2003-11-21 | 2016-02-23 | Intel Corporation | State-transition based network intrusion detection |
US8819265B2 (en) | 2003-12-22 | 2014-08-26 | Rockstar Consortium Us Lp | Managing flow control buffer |
US7543052B1 (en) | 2003-12-22 | 2009-06-02 | Packeteer, Inc. | Automatic network traffic discovery and classification mechanism including dynamic discovery thresholds |
US20050138238A1 (en) | 2003-12-22 | 2005-06-23 | James Tierney | Flow control interface |
US7436770B2 (en) * | 2004-01-21 | 2008-10-14 | Alcatel Lucent | Metering packet flows for limiting effects of denial of service attacks |
US8174978B2 (en) | 2004-03-05 | 2012-05-08 | Xyratex Technology Limited | Method for congestion management of a network, a signalling protocol, a switch, an end station and a network |
US7499402B2 (en) | 2004-04-13 | 2009-03-03 | Radioframe Networks, Inc. | Network delay control |
EP1589716A1 (en) | 2004-04-20 | 2005-10-26 | Ecole Polytechnique Fédérale de Lausanne (EPFL) | Method of detecting anomalous behaviour in a computer network |
US20050249214A1 (en) | 2004-05-07 | 2005-11-10 | Tao Peng | System and process for managing network traffic |
JP4392294B2 (ja) * | 2004-06-15 | 2009-12-24 | 株式会社日立製作所 | 通信統計収集装置 |
JP2006005437A (ja) | 2004-06-15 | 2006-01-05 | Fujitsu Ltd | トラフィック分散制御装置 |
US7457245B2 (en) | 2004-09-07 | 2008-11-25 | Intel Corporation | Directional and priority based flow control mechanism between nodes |
US7724663B2 (en) * | 2004-09-08 | 2010-05-25 | Telefonaktiebolaget L M Ericsson (Publ) | Counter based quality of service (QoS) class upgrade |
US7606158B2 (en) | 2004-09-24 | 2009-10-20 | Cisco Technology, Inc. | Hierarchical flow control for router ATM interfaces |
US7564869B2 (en) | 2004-10-22 | 2009-07-21 | Cisco Technology, Inc. | Fibre channel over ethernet |
US7733770B2 (en) | 2004-11-15 | 2010-06-08 | Intel Corporation | Congestion control in a network |
US7540025B2 (en) | 2004-11-18 | 2009-05-26 | Cisco Technology, Inc. | Mitigating network attacks using automatic signature generation |
KR100622670B1 (ko) | 2004-12-07 | 2006-09-19 | 한국전자통신연구원 | 알려지지 않은 네트워크 공격에 대한 실시간 공격 패턴 검출 시스템 및 그 방법 |
US7436773B2 (en) | 2004-12-07 | 2008-10-14 | International Business Machines Corporation | Packet flow control in switched full duplex ethernet networks |
KR100689430B1 (ko) | 2004-12-16 | 2007-03-08 | 삼성전자주식회사 | 디지털 홈 서비스에서 하이브리드 모니터링을 통한 동적서비스 품질 매핑 장치 및 방법 |
US20060272018A1 (en) | 2005-05-27 | 2006-11-30 | Mci, Inc. | Method and apparatus for detecting denial of service attacks |
US7719982B2 (en) | 2005-08-31 | 2010-05-18 | Intel Corporation | Switching device utilizing flow-control management |
US9467462B2 (en) | 2005-09-15 | 2016-10-11 | Hewlett Packard Enterprise Development Lp | Traffic anomaly analysis for the detection of aberrant network code |
US7908357B2 (en) | 2005-09-21 | 2011-03-15 | Battelle Memorial Institute | Methods and systems for detecting abnormal digital traffic |
US7930752B2 (en) | 2005-11-18 | 2011-04-19 | Nexthink S.A. | Method for the detection and visualization of anomalous behaviors in a computer network |
US20070150949A1 (en) | 2005-12-28 | 2007-06-28 | At&T Corp. | Anomaly detection methods for a computer network |
US8397284B2 (en) | 2006-01-17 | 2013-03-12 | University Of Maryland | Detection of distributed denial of service attacks in autonomous system domains |
US9426092B2 (en) | 2006-02-03 | 2016-08-23 | Level 3 Communications Llc | System and method for switching traffic through a network |
US8613088B2 (en) | 2006-02-03 | 2013-12-17 | Cisco Technology, Inc. | Methods and systems to detect an evasion attack |
US7643418B1 (en) | 2006-03-24 | 2010-01-05 | Packeteer, Inc. | Aggregate rate control using PID |
US7817558B2 (en) | 2006-05-19 | 2010-10-19 | Cisco Technology, Inc. | Flow based flow control in an ethernet switch backplane |
US7701849B1 (en) | 2006-06-23 | 2010-04-20 | Juniper Networks, Inc. | Flow-based queuing of network traffic |
US8050559B2 (en) | 2006-08-21 | 2011-11-01 | Juniper Networks, Inc. | Multi-chassis router with multiplexed optical interconnects |
US8161475B2 (en) | 2006-09-29 | 2012-04-17 | Microsoft Corporation | Automatic load and balancing for virtual machines to meet resource requirements |
CN101563908B (zh) | 2006-12-19 | 2013-01-09 | 国际商业机器公司 | 分析网络流的装置和方法 |
US8520517B2 (en) | 2007-02-21 | 2013-08-27 | Broadcom Corporation | Switch fabric end-to-end congestion avoidance mechanism |
US7916718B2 (en) | 2007-04-19 | 2011-03-29 | Fulcrum Microsystems, Inc. | Flow and congestion control in switch architectures for multi-hop, memory efficient fabrics |
EP1986391A1 (en) | 2007-04-23 | 2008-10-29 | Mitsubishi Electric Corporation | Detecting anomalies in signalling flows |
US8649370B2 (en) | 2007-05-17 | 2014-02-11 | Ciena Corporation | Systems and methods for programming connections through a multi-stage switch fabric with blocking recovery, background rebalancing, and rollback |
US8644151B2 (en) * | 2007-05-22 | 2014-02-04 | Cisco Technology, Inc. | Processing packet flows |
US8331387B2 (en) | 2007-06-22 | 2012-12-11 | Broadcom Corporation | Data switching flow control with virtual output queuing |
US20090077663A1 (en) | 2007-09-17 | 2009-03-19 | Alcatel Lucent | Score-based intrusion prevention system |
US20090300209A1 (en) | 2008-06-03 | 2009-12-03 | Uri Elzur | Method and system for path based network congestion management |
US8325749B2 (en) | 2008-12-24 | 2012-12-04 | Juniper Networks, Inc. | Methods and apparatus for transmission of groups of cells via a switch fabric |
US8213308B2 (en) | 2008-09-11 | 2012-07-03 | Juniper Networks, Inc. | Methods and apparatus for defining a flow control signal related to a transmit queue |
US8218442B2 (en) | 2008-09-11 | 2012-07-10 | Juniper Networks, Inc. | Methods and apparatus for flow-controllable multi-staged queues |
US8254255B2 (en) | 2008-12-29 | 2012-08-28 | Juniper Networks, Inc. | Flow-control in a switch fabric |
US8160072B1 (en) | 2009-12-11 | 2012-04-17 | Brocade Communications Systems, Inc. | Method and system for facilitating QoS zoning in a network |
US9264321B2 (en) | 2009-12-23 | 2016-02-16 | Juniper Networks, Inc. | Methods and apparatus for tracking data flow based on flow state values |
US8588242B1 (en) * | 2010-01-07 | 2013-11-19 | Marvell Israel (M.I.S.L) Ltd. | Deficit round robin scheduling using multiplication factors |
US9602439B2 (en) | 2010-04-30 | 2017-03-21 | Juniper Networks, Inc. | Methods and apparatus for flow control associated with a switch fabric |
US9065773B2 (en) | 2010-06-22 | 2015-06-23 | Juniper Networks, Inc. | Methods and apparatus for virtual channel flow control associated with a switch fabric |
US9660940B2 (en) | 2010-12-01 | 2017-05-23 | Juniper Networks, Inc. | Methods and apparatus for flow control associated with a switch fabric |
US9032089B2 (en) | 2011-03-09 | 2015-05-12 | Juniper Networks, Inc. | Methods and apparatus for path selection within a network based on flow duration |
-
2011
- 2011-03-09 US US13/044,023 patent/US9032089B2/en active Active
-
2012
- 2012-03-06 EP EP15184399.2A patent/EP2993837B1/en active Active
- 2012-03-06 EP EP12158266.2A patent/EP2498457B1/en active Active
- 2012-03-09 CN CN201210228495.4A patent/CN102769565B/zh active Active
- 2012-03-09 CN CN201510744550.9A patent/CN105227485B/zh active Active
-
2015
- 2015-05-11 US US14/708,650 patent/US9716661B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031876A (zh) * | 2004-08-24 | 2007-09-05 | 华盛顿大学 | 用可重新配置硬件进行内容检测的方法和系统 |
US20060092833A1 (en) * | 2004-11-02 | 2006-05-04 | Bemmel Jeroen V | Congestion control for improved management of service level agreements in switched networks |
EP2040420A1 (en) * | 2007-09-20 | 2009-03-25 | Lucent Technologies Inc. | Method and device for shaping a stream of frames of user traffic, as well as computer network |
CN101431474A (zh) * | 2007-11-07 | 2009-05-13 | 丛林网络公司 | 用于流监控的系统和方法 |
CN101729402A (zh) * | 2008-10-24 | 2010-06-09 | 丛林网络公司 | 流相容的动态负荷平衡 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117792992A (zh) * | 2024-02-28 | 2024-03-29 | 鹏城实验室 | 数据传输路径控制方法、装置、介质及设备 |
CN117792992B (zh) * | 2024-02-28 | 2024-05-07 | 鹏城实验室 | 数据传输路径控制方法、装置、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP2498457A1 (en) | 2012-09-12 |
US9032089B2 (en) | 2015-05-12 |
EP2498457B1 (en) | 2015-09-30 |
US20150244633A1 (en) | 2015-08-27 |
EP2993837A1 (en) | 2016-03-09 |
US9716661B2 (en) | 2017-07-25 |
US20120233349A1 (en) | 2012-09-13 |
CN102769565B (zh) | 2015-12-02 |
CN105227485B (zh) | 2018-07-13 |
EP2993837B1 (en) | 2017-07-12 |
CN102769565A (zh) | 2012-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102769565B (zh) | 基于流持续时间的用于网络中路径选择的方法和装置 | |
US10855604B2 (en) | Systems and methods of data flow classification | |
CN102487358B (zh) | 用于与交换机结构相关的流控制的方法和装置 | |
CN103348640B (zh) | 中继装置 | |
CN100594699C (zh) | 用于进行业务量生成的方法和装置 | |
CN101917330B (zh) | 用于限定流量控制信号的方法和装置 | |
CN103516632B (zh) | 用于在分布式交换机中提供服务的方法和装置 | |
US7177276B1 (en) | Pipelined packet switching and queuing architecture | |
CN101917331B (zh) | 用于数据中心的系统、方法以及设备 | |
US11057294B2 (en) | Route control method and route setting device | |
CN109768939A (zh) | 一种支持优先级的标签化网络栈方法和系统 | |
CN103004158A (zh) | 具有可编程内核的网络设备 | |
CN104170335A (zh) | 分离式体系结构网络中的拥塞控制和资源分配 | |
US11502967B2 (en) | Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment | |
CN101291546A (zh) | 核心路由器交换结构协处理器 | |
CN106161275A (zh) | 针对服务质量的预测出口分组分类 | |
CN109684269A (zh) | 一种pcie交换芯片内核及工作方法 | |
CN101449532A (zh) | 用于基于功能冗余的服务质量的方法和系统 | |
CN100531129C (zh) | 用于在网络处理器中记帐的装置和方法 | |
CN106453138A (zh) | 一种报文处理方法和装置 | |
CN103026662A (zh) | 通信系统、节点、统计信息收集装置、统计信息收集方法和程序 | |
CN103516633A (zh) | 用于在分布式交换机中提供服务的方法和装置 | |
CN105610707A (zh) | AntNet路由算法在二维网格拓扑片上网络中的实现方法 | |
US7646779B2 (en) | Hierarchical packet scheduler using hole-filling and multiple packet buffering | |
CN101505283B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |