CN102769565A - 基于流持续时间的用于网络中路径选择的方法和装置 - Google Patents

基于流持续时间的用于网络中路径选择的方法和装置 Download PDF

Info

Publication number
CN102769565A
CN102769565A CN2012102284954A CN201210228495A CN102769565A CN 102769565 A CN102769565 A CN 102769565A CN 2012102284954 A CN2012102284954 A CN 2012102284954A CN 201210228495 A CN201210228495 A CN 201210228495A CN 102769565 A CN102769565 A CN 102769565A
Authority
CN
China
Prior art keywords
packet
module
data flow
data
traffic value
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
CN2012102284954A
Other languages
English (en)
Other versions
CN102769565B (zh
Inventor
G·艾贝
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.)
Jungle Network
Juniper Networks Inc
Original Assignee
Jungle Network
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 Jungle Network filed Critical Jungle Network
Priority to CN201510744550.9A priority Critical patent/CN105227485B/zh
Publication of CN102769565A publication Critical patent/CN102769565A/zh
Application granted granted Critical
Publication of CN102769565B publication Critical patent/CN102769565B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic 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

基于流持续时间的用于网络中路径选择的方法和装置
背景技术
这里描述的一些实施例一般涉及数据中心的网络流量转发,并且尤其涉及用于基于数据中心的数据流持续时间将数据包归为队列类别的方法和装置。
在一些实施例中,为单独的应用构建单独的网络来传送流量。例如,许多高性能的计算应用程序或高频的贸易系统使用专用的低延迟网络。然而,当对独立网络的需求增加时,这种独立网络的方法是昂贵的。可选地,一些已知的数据中心具有多个网络接口,每个专用于不同类型的数据流(例如,批量数据传输,存储器存取,控制通信流量)。然而,这样的一种方法在数据中心中典型地是不实用或不经济的,其不得不大范围地部署服务器虚拟化。一些其他已知的数据中心将流量流分类为不同的流量类别,以便这些类别的流量可以在数据中心独立地被缓冲。然而,将流量流分类为不同的流量类别不保证能满足每个流理想的需求,因为当数据流在进入该数据中心被分类时,对数据中心来说数据流的表现(例如,持续时间)可能是未知的或不可获得的,或者单个的应用会产生多种不同类型的数据流,其具有不同的延迟和吞吐量需求。同样,与给定数据流的服务需求类别有关的信息(例如,延迟需求)可能不被包含在数据流的数据包(或分组,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与流异常相关联。在一些实施例中,数据包(或关联于数据包的数据流)的深度数据包检查、模式匹配和/或常规表达评估(regular expression evaluation)可以在流分析模块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可以一起定义流表。在一些实施例中,流表可以实现为布隆过滤器(bloom filter)(并且利用多个哈希函数)。在一些实施例中,索引模块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,标题为“Distributed Multi-Stage Switch Fabric”,2008年12月29日提交的共同未决U.S.专利申请No.12/345,502,标题为“Methods andApparatus Related to a Modular Switch Architecture”,以及2008年12月29日提交的共同未决U.S.专利申请No.12/345,500,标题为“System Architecture for aScalable and Distributed Multi-Stage Switch Fabric”,这里合并引用它们所有的内容。
如图3所示,交换器300可以包括一个或多个输入端口302和一个或多个输出端口304。输入端口302和输出端口304可以是一个或多个通信接口和/或网络接口(例如,40十亿比特(Gb)以太网接口,100Gb以太网接口,等)的一部分,交换器300可以通过它们发送数据(例如,数据包和/或数据信元的数据流)给通信网络中的其他设备和/或接收来自通信网络中的其他设备的数据。与交换器300通信的设备可以利用任何适合的连接,例如像光连接(例如,光缆和光学连接器),电连接(例如,电缆和电连接器),无线连接(例如,无线链路和无线信号收发器)和/或类似,操作性地耦合到交换器300的一个或多个输入端口302和/或输出端口304。类似地说,在一些实施例中,输入端口302和输出端口304可以利用双绞线电信令经由电缆,或利用光纤信令经由光纤缆线,或利用无线信令经由两个无线信号收发器之间的无线链路,实现物理层。在一些实施例中,一些输入端口302和/或输出端口304实现一个物理层例如双绞线电信令,并且其他的输入端口302和/或输出端口304实现不同的物理层例如光纤信令。
此外,输入端口302和输出端口304可以允许交换器300通过一个或多个通信协议(例如,以太网协议,多协议标签交换(multi-protocol labelswitching,MPLS)协议,光纤信道协议,通过以太网的光纤信道(fibre-channelover Ethernet)协议,与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部分包括相同的位值(或比特值,bit value),其表示在数据流的所有数据包上相同的源标识符和/或相同的目的地标识符。结果是,计算出的哈希值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.一种存储有表示指令的代码的非暂时性处理器可读介质,所述指令使得处理器:
至少部分地基于第一数据包的源标识符和第一数据包的目的地标识符中的一个,计算与第一数据包关联的数据流标识符;
将与所述数据流标识符关联的数据流值与数据流阈值进行比较;
在将所述数据流值与所述数据流阈值进行比较的时间并且响应于将所述数据流值与所述数据流阈值进行比较,发送转变信号,使得转发模块在所述时间之后基于所述数据流标识符将第一数据包存储在第一输出队列中,所述转发模块被配置为在所述时间之前基于所述数据流标识符将第二数据包存储在第二输出队列中;以及
响应于比较所述数据流值而修改所述数据流值。
8.根据权利要求7所述的非暂时性处理器可读介质,其中表示使得处理器计算数据流标识符的指令的代码包括表示使得处理器执行如下操作的指令的代码:使用所述源标识符和所述目的地标识符中的至少一个作为哈希函数的输入,计算所述数据流标识符。
9.根据权利要求7所述的非暂时性处理器可读介质,其中第一输出队列是低优先级输出队列,并且第二输出队列是高优先级输出队列。
10.根据权利要求7所述的非暂时性处理器可读介质,其中所述数据流值是数据包计数器,表示使得处理器修改数据流值的指令的代码包括表示使得处理器执行如下操作的指令的代码:响应于比较所述数据流值,将所述数据包计数器增大。
11.根据权利要求7所述的非暂时性处理器可读介质,其中所述数据流值是数据包大小计数器,表示使得处理器修改数据流值的指令的代码包括使得处理器执行如下操作的指令的代码:将所述数据包大小计数器增大与第一数据包的大小相关的数量。
12.根据权利要求7所述的非暂时性处理器可读介质,其中所述数据流值是移动平均带宽计数器,表示使得处理器修改数据流值的指令的代码包括使得处理器执行如下操作的指令的代码:基于第一数据包的大小、以及接收第一数据包与接收之前最近的具有所述源标识符和所述目的地标识符的数据包之间的时间量,修改所述移动平均带宽计数器。
13.根据权利要求7所述的非暂时性处理器可读介质,其中表示使得处理器修敌数据流值的指令的代码包括表示如下指令的代码:响应于比较所述数据流值,通过增大所述数据流值和减小所述数据流值中的一个来修改所述数据流值,该非暂时性处理器可读介质还包括表示使得处理器执行如下操作的指令的代码:
定期地通过增大所述数据流值和减小所述数据流值中的另一个来修改所述数据流值。
14.一种装置,包括:
在存储器和处理装置中的至少一个中实现的转发模块,所述转发模块被配置为当所述转发模块处于第一配置时,将多个数据包中的第一数据包存储到第一输出队列中,所述多个数据包中的每个数据包具有与所述多个数据包中的其余的数据包共同的源标识符和共同的目的地标识符,所述转发模块被配置为当所述转发模块处于第二配置时,将所述多个数据包中的第二数据包存储到第二输出队列中;以及
流模块,被配置为存储表示所述多个数据包的特性的数据流值,所述流模块被配置为每次接收到所述多个数据包中的数据包时,修改所述数据流值,所述流模块被配置为当所述数据流值经过数据流阈值时,发送转变信号,所述转发模块被配置为响应于接收到所述转变信号而从第一配置改变为第二配置。
15.根据权利要求14所述的装置,其中第一输出队列是高优先级输出队列以及第二输出队列是低优先级输出队列。
16.根据权利要求14所述的装置,其中所述数据流值是数据包计数器,所述流模块被配置为每次所述转发模块接收到所述多个数据包中的数据包时,增大所述数据包计数器。
17.根据权利要求14所述的装置,其中所述数据流值是数据包大小计数器,所述流模块被配置为当所述转发模块接收到所述多个数据包中的数据包时,将所述数据包大小计数器增大与所述数据包的大小相关的数量。
18.根据权利要求14所述的装置,其中所述数据流值是移动平均带宽计数器,所述流模块被配置成基于所述多个数据包中的数据包的大小、以及接收所述数据包与接收所述多个数据包中的之前最近的数据包之间的时间量,修改所述移动平均带宽计数器。
19.根据权利要求14所述的装置,其中所述流控制模块被配置为当所述数据流值经过所述数据流阈值并且所述转发模块处于第一配置时,发送所述转变信号,所述流控制模块被配置为当所述数据流值经过所述数据流阈值并且所述转发模块处于第二配置时,不发送所述转变信号。
20.根据权利要求14所述的装置,其中所述流模块被配置为每次接收到所述多个数据包中的数据包时,通过增大所述数据流值和减小所述数据流值中的一个来修改所述数据流值,所述流模块被配置为定期地通过增大所述数据流值和减小所述数据流值中的另一个来修改所述数据流值。
CN201210228495.4A 2011-03-09 2012-03-09 基于流持续时间的用于网络中路径选择的方法和装置 Active CN102769565B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510744550.9A CN105227485B (zh) 2011-03-09 2012-03-09 基于流持续时间的用于网络中路径选择的方法和装置

Applications Claiming Priority (2)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510744550.9A Division CN105227485B (zh) 2011-03-09 2012-03-09 基于流持续时间的用于网络中路径选择的方法和装置

Publications (2)

Publication Number Publication Date
CN102769565A true CN102769565A (zh) 2012-11-07
CN102769565B CN102769565B (zh) 2015-12-02

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 After (1)

Application Number Title Priority Date Filing Date
CN201510744550.9A Active CN105227485B (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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104871499A (zh) * 2012-12-19 2015-08-26 日本电气株式会社 通信节点、控制装置、控制信息条目的管理方法以及程序
CN105704052A (zh) * 2014-11-27 2016-06-22 华为技术有限公司 一种量化的拥塞通告消息生成方法及装置
CN105721300A (zh) * 2014-12-23 2016-06-29 英特尔公司 用于网络设备流查找管理的技术

Families Citing this family (37)

* Cited by examiner, † Cited by third party
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
US8902899B2 (en) * 2013-02-08 2014-12-02 International Business Machines Corporation Input buffered switching device including bypass logic
US9811500B2 (en) 2013-06-13 2017-11-07 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
US10158538B2 (en) 2013-12-09 2018-12-18 Nicira, Inc. Reporting elephant flows to a network controller
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
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
US9992094B1 (en) * 2016-06-27 2018-06-05 Amazon Technologies, Inc. Adaptive forwarding tables
US10103992B1 (en) 2016-06-27 2018-10-16 Amazon Technologies, Inc. Network traffic load balancing using rotating hash
US10182017B2 (en) 2016-06-30 2019-01-15 Mellanox Technologies Tlv Ltd. Estimating multiple distinct-flow counts in parallel
US10498612B2 (en) * 2016-09-27 2019-12-03 Mellanox Technologies Tlv Ltd. Multi-stage selective mirroring
US10574546B2 (en) 2016-09-27 2020-02-25 Mellanox Technologies Tlv Ltd. Network monitoring using 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
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
US20230224250A1 (en) * 2022-01-12 2023-07-13 Vmware, Inc. Probabilistic filters for use in network forwarding and services
US20230261955A1 (en) * 2022-01-27 2023-08-17 Avago Technologies International Sales Pte. Limited Feature extraction for inline network analysis
CN117792992B (zh) * 2024-02-28 2024-05-07 鹏城实验室 数据传输路径控制方法、装置、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP1653685A1 (en) * 2004-11-02 2006-05-03 Lucent Technologies Inc. Congestion control for the management of service level agreements in switched networks
CN101779434A (zh) * 2007-05-22 2010-07-14 思科技术公司 处理分组流

Family Cites Families (136)

* Cited by examiner, † Cited by third party
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
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
CA2428261A1 (en) 2000-11-07 2002-05-16 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
DE60124295T8 (de) 2000-11-30 2007-12-06 Lancope, Inc. Flussbasierte erfassung eines eindringens in ein netzwerk
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
US7234168B2 (en) 2001-06-13 2007-06-19 Mcafee, Inc. Hierarchy-based method and apparatus for detecting attacks on a computer system
US7042842B2 (en) 2001-06-13 2006-05-09 Computer Network Technology Corporation Fiber channel switch
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
US20030026267A1 (en) 2001-07-31 2003-02-06 Oberman Stuart F. Virtual channels in a network switch
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
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
US7230947B1 (en) 2001-12-14 2007-06-12 Applied Micro Circuits Corporation Minimum latency cut-through 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
WO2005032167A1 (en) 2003-09-29 2005-04-07 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
US20050138238A1 (en) 2003-12-22 2005-06-23 James Tierney Flow control interface
US7543052B1 (en) 2003-12-22 2009-06-02 Packeteer, Inc. Automatic network traffic discovery and classification mechanism including dynamic discovery thresholds
US8819265B2 (en) 2003-12-22 2014-08-26 Rockstar Consortium Us Lp Managing flow control buffer
US7436770B2 (en) * 2004-01-21 2008-10-14 Alcatel Lucent Metering packet flows for limiting effects of denial of service attacks
JP2007526706A (ja) 2004-03-05 2007-09-13 ザイラテックス・テクノロジー・リミテッド ネットワークにおける輻輳管理方法、シグナリングプロトコル、スイッチ、エンドステーション、及びネットワーク
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
JP2006005437A (ja) 2004-06-15 2006-01-05 Fujitsu Ltd トラフィック分散制御装置
JP4392294B2 (ja) * 2004-06-15 2009-12-24 株式会社日立製作所 通信統計収集装置
CN100461091C (zh) * 2004-08-24 2009-02-11 华盛顿大学 用可重新配置硬件进行内容检测的方法和系统
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
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
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
US8072894B2 (en) * 2007-11-07 2011-12-06 Juniper Networks, Inc. Systems and methods for flow monitoring
US20090300209A1 (en) 2008-06-03 2009-12-03 Uri Elzur Method and system for path based network congestion management
US8218442B2 (en) 2008-09-11 2012-07-10 Juniper Networks, Inc. Methods and apparatus for flow-controllable multi-staged queues
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
US8228929B2 (en) * 2008-10-24 2012-07-24 Juniper Networks, Inc. Flow consistent dynamic load balancing
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP1653685A1 (en) * 2004-11-02 2006-05-03 Lucent Technologies Inc. Congestion control for the management of service level agreements in switched networks
CN101779434A (zh) * 2007-05-22 2010-07-14 思科技术公司 处理分组流

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104871499A (zh) * 2012-12-19 2015-08-26 日本电气株式会社 通信节点、控制装置、控制信息条目的管理方法以及程序
US9843516B2 (en) 2012-12-19 2017-12-12 Nec Corporation Communication node, control apparatus, method for management of control information entries and program
CN105704052A (zh) * 2014-11-27 2016-06-22 华为技术有限公司 一种量化的拥塞通告消息生成方法及装置
CN105721300A (zh) * 2014-12-23 2016-06-29 英特尔公司 用于网络设备流查找管理的技术
CN105721300B (zh) * 2014-12-23 2019-04-30 英特尔公司 用于网络设备流查找管理的方法及设备
US10284470B2 (en) 2014-12-23 2019-05-07 Intel Corporation Technologies for network device flow lookup management

Also Published As

Publication number Publication date
US9716661B2 (en) 2017-07-25
EP2993837B1 (en) 2017-07-12
US20120233349A1 (en) 2012-09-13
CN102769565B (zh) 2015-12-02
EP2993837A1 (en) 2016-03-09
US20150244633A1 (en) 2015-08-27
CN105227485A (zh) 2016-01-06
CN105227485B (zh) 2018-07-13
US9032089B2 (en) 2015-05-12
EP2498457B1 (en) 2015-09-30
EP2498457A1 (en) 2012-09-12

Similar Documents

Publication Publication Date Title
CN102769565A (zh) 基于流持续时间的用于网络中路径选择的方法和装置
CN101917330B (zh) 用于限定流量控制信号的方法和装置
CN100594699C (zh) 用于进行业务量生成的方法和装置
CN102487358B (zh) 用于与交换机结构相关的流控制的方法和装置
CN103348640B (zh) 中继装置
CN101473598B (zh) 使用虚拟接口在转发上下文之间传送分组
CN103916326B (zh) 用于数据中心的系统、方法以及设备
US7177276B1 (en) Pipelined packet switching and queuing architecture
CN103516632B (zh) 用于在分布式交换机中提供服务的方法和装置
CN100405344C (zh) 用于在交换结构中分发缓冲区状态信息的装置和方法
CN103444141B (zh) 分组调度方法和设备
CN1543149B (zh) 网络环境中的流控制
CN107005584A (zh) 内联服务交换机
CN103346922A (zh) 基于sdn的确定网络状态的控制器及其确定方法
CN102347898A (zh) 有关网络内路由选择的方法和设备
CN101496347A (zh) 用于优先等级确定的基于内容的区分及定序
US11502967B2 (en) Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment
CN105162724A (zh) 一种数据入队与出队方法及队列管理单元
CN106161275A (zh) 针对服务质量的预测出口分组分类
CN105099916B (zh) 开放流路由交换设备及其对数据报文的处理方法
CN103026662A (zh) 通信系统、节点、统计信息收集装置、统计信息收集方法和程序
JP5104508B2 (ja) 中継装置およびパケット中継方法
CN101505283B (zh) 一种报文处理方法及装置
CN116489104A (zh) 一种基于动态优先级的流量调度方法与系统
CN116455824A (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
CB02 Change of applicant information

Address after: American California

Applicant after: Juniper Networks, Inc.

Address before: American California

Applicant before: Jungle network

CB02 Change of applicant information
COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: NETSCREEN TECHNOLOGIES INC. TO: JUNIPER NETWORKS INC.

C14 Grant of patent or utility model
GR01 Patent grant