CN101729402A - 流相容的动态负荷平衡 - Google Patents
流相容的动态负荷平衡 Download PDFInfo
- Publication number
- CN101729402A CN101729402A CN200910176163A CN200910176163A CN101729402A CN 101729402 A CN101729402 A CN 101729402A CN 200910176163 A CN200910176163 A CN 200910176163A CN 200910176163 A CN200910176163 A CN 200910176163A CN 101729402 A CN101729402 A CN 101729402A
- Authority
- CN
- China
- Prior art keywords
- output port
- output ports
- data flow
- utilization rate
- output
- 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
- 230000015572 biosynthetic process Effects 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 11
- 230000000875 corresponding effect Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 12
- 238000013507 mapping Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005352 clarification Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/10—Flow control; Congestion control
-
- 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/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- 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/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- 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/52—Queue scheduling by attributing bandwidth to queues
-
- 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/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6265—Queue scheduling characterised by scheduling criteria for service slots or service orders past bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0882—Utilisation of link capacity
Abstract
一种装置提供流表。该装置接收数据单元,确定与该数据单元相关联的数据流,确定该流表是否包括对应于该数据流的项,确定装置的输出端口组的当前使用率,当流表没有存储对应于该数据流的项时,基于输出端口组的当前使用率来选择输出端口组中用于该数据流的输出端口,以及将数据单元存储在与所选择的输出端口相关联的队列中。
Description
背景技术
在日益增长的网络世界,越来越多的诸如数据、声音以及视频的通信量,通过公共网络或专用网络发送。网络装置通常执行一些类型的负荷平衡以提高网络的性能。在路由器中,例如,转发决定可以包括查找转发表以识别逻辑电路输出端口。逻辑输出端口可以对应于单一物理输出端口,或一组物理输出端口。逻辑端口与物理端口映射表可以用来将逻辑输出端口映射到逻辑输出端口对应的物理输出端口。
用在网络装置中的负荷平衡技术包括对所接收的包执行散列以识别对应于发送所接收包的逻辑输出端口的物理输出端口之一。这种静态散列所接收的包至物理输出端口保证了与同一流相关联的包是从相同物理输出端口发送的,因此,不会变得混乱。
然而,流的特性可以随时间变化。因此,输出端口可能随着通信量被淹没,从而使应实现散列的负荷平衡失败。
发明内容
根据一个实施例,一种由装置执行的方法,可以包括提供流表;接收数据单元;确定与数据单元相关联的数据流;确定流表是否包括对应于该数据流的项;确定该装置的一组输出端口的当前使用率;当流表没有存储对应于该数据流的项时,基于该组输出端口的当前使用率,从该组输出端口中为该数据流选择一个输出端口;以及在将所述数据单元存储在与所选择的输出端口相关联的队列中。
根据另一实施例,一种装置可以包括一组输出端口,以及存储包括多个项的流表的存储器,其中每个项都可以对应于数据流集合中不同的一个数据流。该装置还可以包括逻辑电路,该逻辑电路用于接收数据单元、确定与数据单元相关联的数据流、确定流表是否包括对应于数据流的项、在流表包括对应于数据流的项时,确定在接收数据单元和接收数据流中的最后的数据单元之间是否至少已经经过了阈值时间量、当接收数据单元和接收数据流中的最后的数据单元之间至少已经经过了阈值时间量时,确定该组的输出端口的当前使用率、基于该组输出端口的当前使用率从该组输出端口中为该数据流选择一个输出端口、以及使用关于所选输出端口的信息来更改流表中的项。
根据另一实施例,一种装置可以包括一组输出端口和存储包括多个项的流表的存储器,其中,每个项都对应于数据流集合中不同的一个数据流并标识输出端口之一。该装置还可以包括逻辑电路,该逻辑电路用于接收数据单元、确定与该数据单元相关联的数据流、确定该流表是否包括对应于该数据流的项、当流表包括对应于该数据流的项时,从该流表中识别用于该数据流的输出端口组中的一个输出端口、确定所识别的输出端口不可用、确定当所识别的输出端口不可用时输出端口组的当前使用率、基于输出端口组的当前使用率,为该数据流选择输出端口组中的一个输出端口、以及使用关于所选择的输出端口的信息修改流表中的项。
根据另一实施例,一种装置可以包括一组输出端口。该装置还包括用于将流表存储在存储器中的装置,该流表包括多个项,每个项都对应于数据流集合中的一个不同数据流;用于分析流表中的多个项中的特定项以确定数多个据流中相应的一个数据流中的最后的数据单元何时被接收的装置,其中特定项标识该组输出端口中的特定输出端口;用于自最后的数据单元被接收之后已经至少经过了阈值时间量时确定该组输出端口的当前使用率的装置;用于基于该组输出端口的当前使用率,确定该特定输出端口相对于该组输出端口中的其他输出端口被过度使用的装置;用于为多个数据流中相应的一个数据流选择该组输出端口中的其他输出端口的装置,其中该多个输出端口中的另一输出端口相对于该特定输出端口较少被使用;以及使用关于该组输出端口中的所述另一输出端口的信息修改该特定项的装置。
附图说明
附图结合在此并构成本说明书的一部分与说明书一起示出了在此描述的一个或多个实施例,并解释了这些实施例。在附图中:
图1是示例性网络的示意图,在该网络中实现了在此描述的系统和方法;
图2是示出了图1的网络装置的示例性部件的框图;
图3是示出了图2的接口的示例性部件的框图;
图4是示出了图3的流管理和结构队列逻辑电路的示例性功能部件的框图;
图5是图4的流表的示例性字段的示意图;
图6和图7示出了用于处理数据单元的示例性处理的流程图;
图8示出了用于创建或修改流表项的示例性处理的流程图;以及
图9是示出了在此描述的原理的实例的框图。
具体实施方式
下面的具体描述参考附图。不同附图中的相同参考标号表示相同或类似元件。并且,下面的具体描述不局限于本发明。相反,本发明的范围由所附权利要求和等同物限定。
如在此所述的,网络装置可以通过基于输出端口的当前使用率为数据流的数据单元动态分配和/或重新分配输出端口来执行通过其输出端口的负荷平衡。在此使用的术语“数据单元”可以表示包、数据包、或单元;包、数据包或单元的片段;或数据的其他类型或排列。
示例性网络
图1是示例性网络100的示意图,在该网络中可以实现在此描述的系统和方法。网络100可以包括任何类型的网络,例如互联网、ad hoc网络、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如无线通信网络或公共交换电话网络(PSTN))、或多个网络的组合。
如图所示,网络100可以包括N个网络装置102-1至102-N(本文中统称为“网络装置102”或单独地称为“网络装置102”)(N≥1)。网络装置102-1至102-N中每个网络装置都包括交换机、路由器、服务器或其他类型的装置。尽管网络装置102-1至102-N可以被实施为不同类型的装置,在下面的段落中,网络装置102-1至102-N以路由器来描述。利用实例示出了互联网络装置102-1至102-N的链路。网络装置102-1至102-N可以通过不同于图1中所示的链路互连。
图2是示出了网络装置102的示例性部件的框图。如图2所示,网络装置102可以包括系统控制模块210、交换机结构220以及一组接口230。在另一实施例中,网络装置102可以包括比图2中所示的部件相比更少、更多、不同或不同安排的部件。
系统控制模块210可以包括一个或多个处理器、微处理器、特定用途集成电路(ASIC)、现场可编程门阵列(FPGA)、和/或为连网和通信优化的处理逻辑电路。系统控制模块210可以执行网络装置102的高级管理功能。例如,系统控制模块210可以与连接到网络装置102的其他网络或系统进行通信以交换关于网络拓扑的信息。在一些实施例中,系统控制模块210可以包括路由引擎,用于基于网络拓扑信息来创建路由表、基于路由表来创建转发表、以及发送这些表至接口230用于数据单元路由。系统控制模块210还可以包括静态存储器(例如只读存储器(ROM))、动态存储器(例如随机存取存储器(RAM))、片上高速缓冲存储器、和/或用于存储数据和/或机器可读指令的闪存。
交换机结构220可以包括一个或多个交换平面以便于接口230和/或系统控制模块210之间的通信。在一个实施例中,每个交换平面都可以包括交叉开关元件的单级或多级开关。交换机结构220还可以包括、或可替换地包括处理器、存储器、和/或允许在系统控制模块210和接口230之间进行通信的路径。
接口230可以包括装置或组件,例如线卡,用于接收来自网络链路(或来自其他接口230)的输入数据单元以及用于发送数据单元至网络链路(或至其他接口230)。例如,接口230可以包括以太网接口、光学载体(OC)接口、和/或异步传输模式(ATM)接口。接口230可以管理能够接收数据单元的一组输入端口,以及能够发送数据单元的一组输出端口。
根据该实施例,图2中示出的部件可以提供或多或少的功能。例如,如果网络装置102执行作为部分多协议标签交换(MPLS)路由器的互联网协议(IP)数据单元路由功能,则系统控制模块210可以执行与获取来自MPLS网络中的其他路由器的路由信息相关联的任务。在这些情况下,将网络通信量从一个接口传送到另一接口包括基于标签的路由,而不是基于IP地址的路由。
图3是示出了接口230的示例性部件的框图。如图3所示,接口230可以包括一个或多个分组转发引擎(PFE)310-1,...,310-M(本文中统称为“PFE 310”或单独称为“PFE 310”)(M≥1)、以及一个或多个流管理和结构队列(FFQ)逻辑电路320-1,...,320-M(本文中统称以及单独称为“FFQ逻辑电路320”。在其他实施例中,接口230可以包括比图3中所示更少、附加的、不同、活不同安排的部件。
每个PFE 310都可以包括硬件或硬件和软件的组合,其可以接收、存储、处理和/或转发数据单元。例如,PFE 310可以处理从输入网络链路接收到的数据单元并准备数据单元用于在输出网络链路中发送。PFE 310可以基于数据单元的头信息来确定转发决定。每个PFE 310都可以包括存储器以帮助存储、处理和/或转发所接收的数据单元。PFE 310可以发送所接收的数据单元至FFQ逻辑电路320。
为了基于所接收的数据单元来确定转发决定,例如,PFE 310可以基于接收的数据单元的头中的一些字段来标识用于该接收数据单元的逻辑输出端口。逻辑输出端口可以对应于一个或多个物理输出端口(被称作“端口组”)。较高等级的协议(例如,路由协议)能够确定到达特定目的地的可能的替换方式的路径集合。可以建立包括连接至这些路径的物理输出端口的端口组。PFE 310在发送数据单元至FFQ 320时可以包括关于逻辑输出端口的信息,例如逻辑端口号。
FFQ逻辑电路320可以包括硬件或硬件和软件的组合,其可以接收来自PFE 310的数据单元,以及基于与数据单元相关联的数据流和格物理输出端口的当前使用率来动态地将物理输出端口分配给该数据单元。同样,FFQ逻辑电路320可以在流表中创建数据流的表项,并监控与该数据流相关的流统计信息。在一个实施例中,FFQ逻辑电路320可以使用用于每个数据流的定时器,来跟踪用于该数据流的数据单元的定时,以及使用用于每个数据流的一组计数器来跟踪该数据流的数据单元/字节计数。
图4是示出了FFQ逻辑电路320的示例性功能部件的框图。如图4所示,FFQ逻辑电路320可以包括流识别逻辑电路410、流表420、逻辑端口至端口组映射表430、输出端口状态表440、输出端口识别逻辑电路450、维护逻辑电路460、以及结构接口470。在另一实施例中,FFQ逻辑电路320可以包括与图4中示出的这些部件相比更少、更多、不同或不同安排的部件。例如,在一些实施例中,图4的一个或多个功能部件可以位于FFQ逻辑电路320之外。同样,或者可替换地,所描述的由功能部件之一执行的多个功能之一可以由功能部件中的另一部件执行。
流识别逻辑电路410可以包括硬件或与软件结合的硬件,其可以从PFE 310接收数据单元,确定来自数据单元的流标识符(例如,从数据单元接收流标识符或基于在数据单元中的信息产生流标识符),以及提供关于数据单元的信息和流标识符以创建和/或更新关于流表420中的数据流的信息。流识别逻辑电路410可以识别来自数据单元的头中的信息的流标识符。例如,流标识符可以由数据单元头中的信息构成,该信息与源地址、目的地地址、源端口、目的地端口和/或协议相关。如上所解释的,在一个实施例中,流标识符可以被计算为数据单元头中的信息的散列值并且可以被用来识别流表420中的项。
流识别逻辑电路410可以基于与数据单元相关的流标识符的识别,确定对应于流标识符的项之前是否在流表420中已经被创建。例如,流识别逻辑电路410可以将流标识符与流表420中的信息进行比较以确定是否存在匹配。如果没有项存在,则在流表420中建立相应的项。然而,如果之前已经在流表420中创建了相应的项(即,属于该数据流的至少一个先前数据单元先前已经被网络装置102接收),则流识别逻辑电路410可以更新相应项中的一个或多个字段以反映最新接收的数据单元。
流表420可以在存储装置(例如一个或多个动态RAM(DRAM))中实现。流表420可以包括多个对应于由网络装置102标识的数据流的项。例如,流表420中的每个项可以包括用来标识每个数据流的流标识字段,对应于数据单元处理的信息(例如,端口或接口信息,协议信息等)的其他相关字段,以及标识所分配的输出端口的输出端口字段。流表420可以包括关于大量数据流(例如一百万以上数据流)的信息。在一个实施例中,流表420可以包括多达四百万或更多不同的流项。
图5是流表420的示例性字段的示意图。如图5所示,流表420可以包括用于从数据流1至x中的每个数据流的多个流表项。这些示例性流表项可以包括流标识(ID)字段510、层2(L2,第2层)信息字段515、层3(L3,第3层)信息字段520、层4(L4,第4层)信息字段525、数据单元计数器字段530、字节计数器字段535、定时器字段540、以及输出端口字段545。
流标识字段510可以包括与特定数据流相关联的唯一、或基本唯一的流标识符。例如,流标识符可以包括从对应于数据流的数据单元的头中的一些信息得到的值。例如,流标识符可以由数据单元头中的信息构成,这些信息关于源地址、目的地址、源端口、目的端口、和/或协议。在一个实施例中,流标识符可以作为数据单元头中的信息的散列值来计算。流标识符可以提供识别并在流表420中定位数据流的有效方式。
L2信息字段515可以包括L2信息的元素,例如与数据单元相关的源介质存取控制(MAC)地址、与数据单元相关的目的MAC地址等。L3信息字段520可以包括L3信息的元素,例如源和目的IP(互联网协议)地址、L3协议(例如http、ftp)等。L4信息字段525可以包括一个或多个L4信息的元素,例如源和目的端口信息(其通常指定与数据单元相关的应用类型)、L4协议信息等。
数据单元计数器字段530可以包括累计和/或表示对应于数据流的在特定时间段中已经经过接口230的数据单元总数的信息。字节计数器字段535可以包括用于累计和/或表示在上述特定时间段中在数据流中已经传输的字节总数的信息。定时器字段540可以包括与在数据流中接收到的数据单元有关的定时信息或时间戳。输出端口字段545可以包括标识分配给数据流的物理输出端口的信息。
在一个实施例中,L2字段515可以包括源和目的MAC地址、L3字段520可以包括源和目的IP地址和L3协议类型、以及L4字段525可以包括源和目的端口和L4协议类型。定时器字段540、数据单元计数器字段530、以及字节计数器字段535的值可以周期地被复位或累计以提供与特定数据流相关的总数。
返回图4,逻辑端口至端口组映射表430可以包括将逻辑输出端口映射到端口组的表。例如,在逻辑端口至端口组映射表430中的项可以包括与逻辑输出端口有关的信息(例如逻辑输出端口号)以及与端口组有关的信息(例如,端口组号或分配给端口组的物理输出端口号的集合)。
输出端口状态表440可以包括存储与物理输出端口的状态有关的信息。例如,输出端口状态表440可以用于每个物理输出端口的项并标识输出端口是否可用。如果连接到输出端口的网络链接失败,则输出端口可以是不可用的。输出端口状态表440中的每个项还可以包括关于每个物理输出端口的平均和峰值使用率的带宽统计信息。在输出端口状态表440中的每个项还可以包括表示当前有多少有效流被分配给任一物理输出端口的流统计信息。当选择作为用于给定流的逻辑端口的端口组的成员的物理端口之一时,输出端口状态表440中的带宽和流统计信息可以被输出端口识别逻辑电路450查询。
在一些情况下,输出端口状态表440维护与物理输出端口的状态有关的实时(或接近实时)信息可能是有利的。在这些情况下,PFE 310和FFQ逻辑电路320可以在他们之间交换信息(可能通过交换机结构220)以更新输出端口状态。PFE 310可以聚集信息并将该信息传递到相应的FFQ逻辑电路320。在其他情况下,维护关于物理输出端口的状态的实时信息可能不是必要的。在这些情况下,系统控制模块210可以周期地轮询输出端口以确定各输出端口的状态。系统控制模块210然后可以更新FFQ逻辑电路320的输出端口状态表440中的信息。
输出端口识别逻辑电路450可以包括可以为对应于所接收的数据单元的数据流选择输出端口的硬件或与软件结合的硬件。输出端口识别逻辑电路450例如可以识别分配给端口组的各物理输出端口。在一个实施例中,输出端口识别逻辑电路450可以从逻辑端口至端口组映射表430获取该信息。可替换地,输出端口识别逻辑电路450可以使用例如将端口组映射到分配给端口组的各物理输出端口的表来获取该信息本身。
输出端口识别逻辑电路450可以监控物理输出端口的使用率。例如,输出端口识别逻辑电路450可以例如基于来自输出端口状态表440的信息来确定哪个输出端口可用以及哪个不可用。输出端口识别逻辑电路450还可以基于输出端口状态表440中维护的输出端口使用率统计信息来确定用于目标逻辑端口的优选物理输出端口。例如,输出端口识别逻辑电路450可以在选择分配给流的物理端口时从多个可能物理输出端口中选择具有最低使用率的输出端口。
如果所接收的数据单元与流表420中已经存在用于其的项的数据流相关联,则输出端口识别逻辑电路450可以确定自从接收到用于该数据流的最后的数据单元之后的时间量是否大于阈值(以下称作“第一时间量”)(例如,30秒)。如果已经在第一时间量中接收到数据单元,则输出端口识别逻辑电路450可以从流表420中的输出端口字段545确定用于所接收的数据单元的输出端口。
如果在第一时间量中没有接收到数据单元,则输出端口识别逻辑电路450可以最新地为与所接收的数据单元相关联的数据流选择输出端口。在该种情况下,输出端口识别逻辑电路450可以进行新的输出端口选择的原因在于对于所接收的数据单元来说,相对于在该接收的数据单元之前大于第一时间量所接收的任何数据单元几乎没有机会成为无序的。
为了选择输出端口,输出端口识别逻辑电路450可以考虑在与和数据流相关联的逻辑输出端口相关的端口组中的物理输出端口的当前输出端口的使用率,并基于当前输出端口的使用率,例如最小使用率的输出端口,来选择这些物理输出端口之一。输出端口使用率可以基于输出端口的容量。换句话说,输出端口的容量可以不同(例如,一个输出端口可以连接到一千兆比特链路,而其他输出端口可以连接到十千兆链路)。因此,输出端口使用率可以基于输出端口的当前使用的容量的比例,而不是仅仅基于被使用的总带宽。可替换地,或可选地,输出端口使用率可以基于与数据流相关的历史数据。例如,输出端口使用率可以不仅考虑数据流所使用的当前带宽,而且考虑数据流过去所使用的带宽量。输出端口使用率还可以基于分配给输出端口的有效流的数量。
在替换实施例中,输出端口识别逻辑电路450还可以在确定当前输出端口使用率中考虑流控制信息。例如,以太网协议允许链路等级流控制,其中,输出链路上的下游网络装置可以发送消息以阻止上游网络装置在特定时间段内发送流。从各个上游网络装置看,当在特定输出端口上接收到这样的流控制消息时,可以减少在该输出端口上发送出去的带宽量。在该实施例中,输出端口识别逻辑电路450可以在输出端口选择处理过程中考虑流控制信息。
输出端口识别逻辑电路450可以存储标识在对应于与接收的数据单元相关联的数据流的流表420中的项的输出端口字段545中所选择的输出端口的信息。在上述情况下,所选择的输出端口与已经分配给数据流的输出端口匹配是可能的(例如,在已经分配的输出端口是最小使用率的输出端口或不是被过度使用的输出端口时)。在该种情况下,输出端口识别逻辑电路450不需要更新流表420的输出端口字段545。
如果所接收的数据单元与流表420中已经存在用于其的项的数据流无关,则输出端口识别逻辑电路450可以为该数据流选择输出端口。在一个实施例中,如上所述,输出端口识别逻辑电路450可以基于输出端口的当前使用率,从与数据流有关的端口组中的一组物理输出端口选择输出端口。输出端口识别逻辑电路450可以在由用于与所接收的数据单元有关的数据流的流识别逻辑电路410创建的流表420中的项的输出端口字段545中存储标识所选输出端口的信息。
维护逻辑电路460可以包括可以执行流表420中的一个或多个维护功能的硬件、或与软件结合的硬件。一种维护功能可以包括分析数据流以确定是否应该进行新的输出端口选择。在一个实施例中,维护逻辑电路460可以分析定时器字段540中的信息以确定自从用于该数据流的最后的数据单元被接收之后的时间量是否大于阈值(以下被称作“第二时间量”)(其可以等于(或不同于)上面标识的第一时间量)。当自从最后的数据单元被接收后的时间量大于第二时间量时,维护逻辑电路460可以为该数据流选择新的输出端口。在一个实施例中,如上所述,选择新的输出端口可能包括维护逻辑电路460发送指令连同任何相关信息至输出端口识别逻辑电路450以进行输出端口选择。当最后的数据单元在第二时间量中被接收到,则维护逻辑电路460可以分析其他数据流以确定自从用于数据流的最后的数据单元被接收之后的时间量是否大于第二时间量。
另一维护功能可以涉及确定是否从流表420中去除对应于特定数据流的项。在一个实施例中,维护逻辑电路460可以分析定时器字段540中的信息以确定自从用于特定数据流的最后的数据单元被接收之后的时间量是否大于阈值(以下被称为“第三时间量”)(其可以大于第二时间量)。当自从最后的数据单元被接收之后的时间量大于第三时间量时,维护逻辑电路460可以从流表420中去除该项。在一个实施例中,去除项可以简单地对应于使该项可以用来存储来自新数据流的信息。当最后的数据单元在第三时间量内被接收到时,维护逻辑电路460可以分析另一数据流以确定自从用于该数据流的最后的数据单元被接收之后的时间量是否大于第三时间量。
结构接口470可以包括可以提供至PFE 310和/或交换机结构220的接口的硬件或硬件和软件的结合。结构接口470可以包括一个或多个接口队列或用于临时存储等待从FFQ逻辑电路320发送的数据单元的缓冲器(未示出)。在一个实施例中,结构接口470可以包括用于每个输出端口的独立队列。此外,或可替换地,结构接口470可以包括用于可能分配给各数据单元的不同优先等级的多个独立队列。因此,结构接口470可以包括根据端口和根据优先级的多个独立队列。在其他实施例中,结构接口470可以包括一些其他的队列安排。
结构接口470还可以包括从队列中选择用于发送的数据单元的仲裁器。在一个实施例中,该仲裁器可以使用基于数据单元优先级和/或输出端口可用性的公平选择技术。例如,仲裁器可以选择去往可用于接收数据单元的输出端口的最高优先级数据单元。
示例性处理
图6和图7示出了用于处理数据单元的示例性处理的流程图。图6和图7中示出的处理可以由FFQ逻辑电路320或与FFQ逻辑电路320分开或结合的其他部件执行。该处理可以从被接收的数据单元开始(块610)(图6)。例如,FFQ逻辑电路320可以接收来自PFE 310的数据单元和关于被分配了数据单元的逻辑电路输出端口的信息。
与数据单元相关联的数据流可以被识别(块620)。例如,流识别逻辑电路410可以根据数据单元确定流标识符(例如,从数据单元读取流标识符或根据数据单元中的信息产生流标识符)。如上所述,流识别逻辑电路410可以从数据单元的头中的信息识别流标识符,所述信息例如源地址、目的地址、源端口、目的端口、和/或协议。在一个实施例中,流标识符可以作为数据单元头中的信息的散列值被计算。
可以确定在流表420中是否存在对应于数据流的项(块630)。例如,可以使用流标识符搜索流表420以确定流表420在例如流标识字段510中是否包括具有匹配流标识符的项。
如果流表420包括对应于数据流的项(块630-是),则可以确定自从数据流中的最后的数据单元被接收之后是否已经大于阈值时间量(例如,第一时间量)(即在接收当前数据单元和接收最后数据单元之间已经经过了大于第一时间量的时间)(块640)。当在阈值(第一)时间量之内接收到最后的数据单元时(块640-否),则用于该数据流的物理输出端口可以从流表项中被识别(块650)。例如,输出端口识别逻辑电路450可以从流表420中的输出端口字段545确定用于该数据单元的输出端口。在该情况下,输出端口可以被识别而不必执行逻辑端口至物理端口映射并且不必确定输出端口的使用率。
可以确定输出端口是否可用(块660)。例如,输出端口识别逻辑电路450可以检查输出端口状态表440以确定在输出端口字段545中标识的输出端口是可用还是不可用。如上所述,当连接到输出端口的链路失败时,输出端口可能不可用。
如果标识的输出端口是可用的(块660-是),则数据单元可以基于识别的输出端口被置于队列中(块670)。例如,结构接口470可以将数据单元置于分配给识别输出端口的队列中。如果数据单元具有相关的优先权等级,则结构接口470将数据单元置于对应于识别的输出端口和与该数据单元相关的优先等级的队列中。
该数据单元可以从队列中输出(块680)。例如,数据单元可以保留在该队列中直到置于该队列中的在该数据单元之前的其他数据单元已经从队列中输出。当数据单元到达队列的前面(或头)时,数据单元可以基于数据单元的优先级(如果存在)在所标识的输出端口可以用来接收该数据单元时被选择以从该队列中输出。
如果流表420不包括对应于数据流的项目(块630-否),如果在阈值(第一)时间量内没有接收到最后数据单元(块640-是),或如果识别的输出端口不可用(块660-否),则输出端口可以被选择(块710)(图7)。例如,为了选择输出端口,输出端口识别逻辑电路450可以查阅逻辑端口至端口组映射表430以识别与数据流相关联的端口组。输出端口识别逻辑电路450也可以识别分配给端口组的物理输出端口。输出端口识别逻辑电路450可以考虑这些输出端口的当前输出端口使用率并基于当前输出端口的使用率来选择输出端口之一,例如最小使用率的输出端口。如上所述,在一个实施例中,输出端口使用率可以基于输出端口的容量、输出端口所使用的总带宽、和/或与输出端口相关联的流控制信息。同样如上所述,输出端口使用率可以基于分配给输出端口的数据流所使用的历史带宽。
流表项可以被创建或修改以标识所选择的输出端口(块720)。例如,如果流表420中不存在用于该数据流的项,则流识别逻辑电路410可以在流表420中创建用于该数据流的项。在该种情况下,输出端口识别逻辑电路450可以在流表420中的项的输出端口字段545中存储标识所选择的输出端口的信息。如果用于数据流的项已经在流表420中存在,则输出端口识别逻辑电路450可以使用标识所选输出端口的信息来修改在流表420中的项的输出端口字段545中的信息。
数据单元可以基于所选输出端口置于队列中(块730)。例如,结构接口470可以将数据单元置于分配给所选输出端口的队列中。如果数据单元具有相关的优先级,则结构接口470可以将数据单元置于对应于所选输出端口和与数据单元相关的优先级的队列中。
数据单元可以从该队列中输出(块740)。例如,数据单元可以保留在该队列中直到置于该队列中的该数据单元之前的其他数据单元已经从该队列中输出。当数据单元到达该队列的前部(或头部),数据单元可以基于数据单元的优先级(如果存在),在所选择的输出端口可以用来接收数据单元时被选择用来从队列中输出。
图8示出了用于创建或修改流表项的示例性处理的流程图。图8中示出的处理可以由FFQ逻辑电路320、或与FFQ逻辑电路320分开或结合的其他部件执行。处理可以通过将变量j设置为等于1开始(块810)。流表项目j可以被分析(块820)。例如,维护逻辑电路460可以从项j的定时器字段540读取信息。
可以确定自从接收到数据流中的最后数据单元之后是否已经经过阈值时间量(例如,第二时间量)(块830)。例如,维护逻辑电路460可以确定来自定时器字段540的信息是否大于该阈值。
当最后的数据单元大于阈值(第二)时间量被接收到时(块830-是),则可以分析在与数据流相关联的端口组中的输出端口的各输出端口的使用率(块840)。例如,输出端口识别逻辑电路450可以提供关于各输出端口的当前使用率的信息。如上所述,输出端口的当前使用率可以基于在输出端口处使用的总带宽、输出端口的容量、和/或与该输出端口相关联的流控制信息。维护逻辑电路460可以基于来自输出端口识别逻辑电路450的信息来确定当前输出端口的使用率。
可以确定项j中的输出端口是否被过度使用(块850)。例如,维护逻辑电路460可以比较各输出端口的使用率以确定项j中的输出端口是否相对于其他输出端口被过度使用。这可以通过比较输出端口容量正被使用的部分来确定。
如果项j的输出端口被过度使用(块850-是),则可以为对应于项j的数据流选择新的输出端口(块860)。例如,维护逻辑电路460可以查询逻辑端口至端口组映射表430以识别与该数据流相关联的端口组。维护逻辑电路460还可以识别分配给该端口组的物理输出端口。维护逻辑电路460可以考虑这些输出端口的当前输出端口使用率并基于输出端口的当前使用率来选择这些输出端口之一。在一个实施例中,维护逻辑电路460可以选择最小使用率的输出端口。
项j可以被修改以标识所选择的输出端口(块870)。例如,维护逻辑电路460可以更新流表420中的项j。更具体地,维护逻辑电路460可以使用标识所选输出端口的信息来修改流表420中的项j的输出端口字段545中的信息。
变量j可以被更新(例如,j可以被设置为j加1)(块880)。同样,如果在阈值(第二)时间量内接收到最后的数据单元(块830-否)或者如果在项j中的输出端口没有被过度使用(块850-否),则变量j可以被更新(块880)。然后处理返回到块820以分析流表420中的下一项。
在一个替换实施例中,维护逻辑电路460可以确定分配给特定输出端口的数据流所使用的平均带宽。维护逻辑电路460可以基于例如流表420的数据单元计数器字段530和/或字节计数器字段535中的信息进行确定。维护逻辑电路460可以使用该信息来将数据流分配给输出端口。例如,如果数据流的平均带宽高于特定阈值以及数据流被分配给低速输出端口,则维护逻辑电路460可以重新将数据流分配至更高速输出端口。
示例
图9是示出了在此描述的原理的示例的示意图。如图9所示,数据单元可以被PFE接收。PFE可以使用例如包括在数据单元的头中的目的地址来存取其转发表以识别逻辑端口号。PFE可以发送数据单元和逻辑端口号至FFQ逻辑电路。
FFQ逻辑电路可以使用逻辑端口号来识别对应于逻辑端口号的物理输出端口组(例如端口1,端口2,...,端口n)。如上所述,FFQ逻辑电路可以确定物理输出端口集合中的每个输出端口的输出端口使用率信息。在一个实施例中,该信息可以被输入到选择用于数据流的输出端口之一的加权随机函数中。该加权随机函数可以基于各输出端口的使用率信息来为各输出端口分配加权值,以及基于所分配的加权值选择输出端口之一。所选择的输出端口可以对应于分配给该数据流的物理输出端口。
结论
在此所述的实施方式可以通过基于输出端口的当前使用率将输出端口分配和/或再分配至数据流的数据单元来执行网络装置的输出端口的负荷平衡,同时保持数据单元的顺序。
上述的描述提供了示例和描述,但不旨在穷尽或将本发明局限于所公开的精确形式。根据上述的教导,修改和变形都是可能的或在本发明的实践过程中得到。
例如,尽管已经参考图6-8描述了模块序列,但是在其他实施方式中可以修改块的顺序。此外,独立的模块可以并行地执行。
同样,实施方式的特定部分已经被描述为执行一个或多个功能的“逻辑电路”。术语“逻辑电路”可以包括诸如处理器、ASIC或FPGA、或硬件和软件(例如,运行在通用处理器上的软件)的组合。
应该理解在此描述的各方面可以以在图中描述的实施例中的许多不同形式的软件、固件和硬件实现。用于执行各方面的实际软件代码或特定控制硬件不用于限制实施例。因此,描述各方面的操作和行为而不参考特定软件代码,应理解为软件和控制硬件可以被设计为基于本文中的描述来实现各个方面。
尽管在权利要求中陈述和/或在说明书中公开了特征的特定组合,但这些组合不旨在限制本发明的公开。事实上,这些特征中的许多特征可以以没有在权利要求中具体陈述和/或没有在说明书中公开的方式组合。尽管下面列出的每个从属权利要求可能仅直接依赖于一个其他权利要求,但是本发明的公开包括与权利要求组中的每个其他权利要求结合的每个从属权利要求。
在本发明中使用的元件、动作或指令都不应被解释为本发明的关键或本质,除非在此明确说明了。同样,如在此所使用的,冠词“a”旨在包括一个或多个条目。在仅旨在一个项目时,使用术语“一”或类似语言。此外,词组“基于”旨在表示“至少部分地基于”,除非明确说明有其他方式。
Claims (15)
1.一种由装置执行的方法,包括:
提供流表;
接收数据单元;
确定与所述数据单元相关联的数据流;
确定所述流表是否包括对应于所述数据流的项;
确定所述装置的多个输出端口的当前使用率;
在所述流表没有存储对应于所述数据流的项时,基于所述多个输出端口的所述当前使用率,从所述多个输出端口中选择用于所述数据流的输出端口;以及
将所述数据单元存储在与所选择的输出端口相关的队列中。
2.根据权利要求1所述的方法,进一步包括:
在所述流表中创建标识所选择的输出端口的项。
3.根据权利要求1所述的方法,其中,确定与所述数据单元相关联的所述数据流包括:
对所述数据单元的头的多个字段中的信息执行散列函数以标识所述数据流。
4.根据权利要求1所述的方法,进一步包括:
当所述流表存储有对应于所述数据流的项时,基于所述流表中的信息识别所述多个输出端口中用于所述数据流的输出端口;
确定所识别的输出端口是否可用;
当所识别的输出端口可用时,将所述数据单元存储在与所识别的输出端口相关联的队列中;以及
当所识别的输出端口不可用时,基于所述多个输出端口的所述当前使用率,从所述多个输出端口中选择用于所述数据流的输出端口。
5.根据权利要求1所述的方法,进一步包括:
当所述流表存储有对应于所述数据流的项时,确定所述数据流中的最后的数据单元何时被接收到;
当所述流表存储有对应于所述数据流的项并且在接收所述最后的数据单元和接收所述数据单元之间已经经过了多于阈值时间量的时间时,基于所述多个输出端口的当前使用率来从所述多个输出端口中选择用于所述数据流的输出端口;以及
使用标识所选择的输出端口的信息来修改对应于所述数据流的项。
6.根据权利要求1所述的方法,其中,确定所述多个输出端口的所述当前使用率包括:
基于所述多个输出端口中的一个输出端口的容量和被所述多个输出端口中的所述一个输出端口使用的总带宽,确定所述多个输出端口中的所述一个输出端口的所述当前使用率。
7.根据权利要求1所述的方法,其中,确定所述多个输出端口的所述当前使用率包括:
基于由分配给所述多个输出端口的一个输出端口的多个数据流使用的历史带宽来确定所述多个输出端口中的所述一个输出端口的所述当前使用率。
8.根据权利要求1所述的方法,进一步包括:
分析所述流表中的特定项以确定何时接收到特定数据流中的最后的数据单元,其中,所述特定项标识所述多个输出端口的特定输出端口;
基于所述多个输出端口的当前使用率,确定所述特定输出端口相对于所述多个输出端口的其他输出端口被过度使用;
为所述特定数据流选择所述多个输出端口中的另一输出端口,其中,所述多个输出端口中的所述另一输出端口相对于所述特定输出端口较少使用;以及
修改所述流表中的所述特定项以标识所述多个输出端口的所述另一输出端口。
9.一种装置,包括:
多个输出端口;
存储器,用于存储包括多个项的流表,每个所述项都对应于多个数据流中不同的一个数据流并标识所述多个输出端口之一;
用于接收数据单元的装置;
用于确定与所述数据单元相关联的数据流的装置;
用于确定所述流表是否包括对应于所述数据流的项的装置;
用于在所述流表包括对应于所述数据流的项时,从所述流表中识别所述多个输出端口中用于所述数据流的输出端口的装置;
用于确定所标识的输出端口是不可用的装置;
用于在所标识的输出端口不可用时确定所述多个输出端口的当前使用率的装置;
用于基于所述多个输出端口的当前使用率,从所述多个输出端口中选择用于所述数据流的输出端口的装置;以及用于使用关于所选择的输出端口的信息来修改所述流表中的项的装置。
10.根据权利要求9所述的装置,进一步包括用于将所述数据单元存储在与所选择的输出端口相关联的队列中的装置。
11.根据权利要求9所述的装置,其中,所述用于确定所述多个输出端口的当前使用率的装置包括:基于所述多个输出端口中的一个输出端口的容量和被所述多个输出端口中的所述一个输出端口使用的总带宽确定所述多个输出端口中的所述一个输出端口的当前使用率的装置。
12.根据权利要求9所述的装置,其中,所述用于确定所述多个输出端口的当前使用率的装置包括:基于被分配给所述多个输出端口中一个输出端口的所述多个数据流的一个或多个数据流使用的历史带宽来确定所述多个输出端口中的所述一个输出端口的当前使用率。
13.一种包括多个输出端口的装置,包括:
用于将流表存储在存储器中的装置,所述流表包括多个项,每个所述项都对应于多个数据流中不同的一个数据流;
用于分析所述流表中的所述多个项中的特定项以确定何时接收到所述多个数据流中的相应数据流中的最后的数据单元的装置,其中,所述特定项目标识所述多个输出端口的特定输出端口;
用于在自从所述最后的数据单元被接收之后已经至少经过阈值时间量时,确定所述多个输出端口的当前使用率的装置;
用于基于所述多个输出端口的当前使用率来确定所述特定输出端口相对于所述多个输出端口的其他输出端口被过度使用的装置;
用于为所述多个数据流的所述相应数据流选择所述多个输出端口中的另一输出端口的装置,其中,所述多个输出端口中的所述另一输出端口相对于所述特定输出端口较少被使用;以及
用于使用关于所述多个输出端口的所述另一输出端口的信息来修改所述特定项的装置。
14.根据权利要求13所述的装置,进一步包括:
用于修改所述流表中的所述特定项以标识所述多个输出端口的所述另一输出端口的装置。
15.根据权利要求13所述的装置,其中,所述用于确定所述多个输出端口的当前使用率的装置包括:用于基于所述多个输出端口中的一个输出端口的容量和由所述多个输出端口中的所述一个输出端口使用的总带宽来确定所述多个输出端口的所述一个输出端口的当前使用率的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/257,901 | 2008-10-24 | ||
US12/257,901 US8228929B2 (en) | 2008-10-24 | 2008-10-24 | Flow consistent dynamic load balancing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101729402A true CN101729402A (zh) | 2010-06-09 |
CN101729402B CN101729402B (zh) | 2013-11-20 |
Family
ID=41254673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101761634A Active CN101729402B (zh) | 2008-10-24 | 2009-09-23 | 流相容的动态负荷平衡 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8228929B2 (zh) |
EP (1) | EP2180644B1 (zh) |
CN (1) | CN101729402B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011127849A3 (zh) * | 2011-05-16 | 2012-04-19 | 华为技术有限公司 | 一种数据流传送方法及网络设备 |
CN105227485A (zh) * | 2011-03-09 | 2016-01-06 | 瞻博网络公司 | 基于流持续时间的用于网络中路径选择的方法和装置 |
CN114513464A (zh) * | 2021-12-31 | 2022-05-17 | 深圳市联洲国际技术有限公司 | 流量负载均衡调度方法、装置、设备及存储介质 |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8154996B2 (en) | 2008-09-11 | 2012-04-10 | Juniper Networks, Inc. | Methods and apparatus for flow control associated with multi-staged queues |
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 |
US9270542B2 (en) | 2009-07-31 | 2016-02-23 | Ixia | Apparatus and methods for forwarding data packets captured from a network |
US20110083156A1 (en) * | 2009-10-07 | 2011-04-07 | Canon Kabushiki Kaisha | Network streaming of a video stream over multiple communication channels |
US8238250B2 (en) * | 2009-10-16 | 2012-08-07 | Hei Tao Fung | QoS-aware flow-based dynamic load balancing for link aggregation |
JP5672235B2 (ja) * | 2009-10-19 | 2015-02-18 | 日本電気株式会社 | 通信システム、フロー制御装置、フローテーブルの更新方法およびプログラム |
JP5387349B2 (ja) * | 2009-11-11 | 2014-01-15 | 富士通株式会社 | 中継装置 |
EP2561645B1 (en) | 2010-04-23 | 2020-02-26 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Integrated network data collection arrangement |
US9065773B2 (en) | 2010-06-22 | 2015-06-23 | Juniper Networks, Inc. | Methods and apparatus for virtual channel flow control associated with a switch fabric |
JP5586417B2 (ja) * | 2010-10-25 | 2014-09-10 | 株式会社日立製作所 | ストリームデータ処理における性能保証方法および装置 |
US9660940B2 (en) | 2010-12-01 | 2017-05-23 | Juniper Networks, Inc. | Methods and apparatus for flow control associated with a switch fabric |
CN102137018A (zh) * | 2011-03-21 | 2011-07-27 | 华为技术有限公司 | 一种负载分担方法及装置 |
WO2012141696A1 (en) * | 2011-04-13 | 2012-10-18 | Hewlett-Packard Development Company, L.P. | Input/output processing |
WO2012141694A1 (en) | 2011-04-13 | 2012-10-18 | Hewlett-Packard Development Company, L.P. | Input/output processing |
US20140025859A1 (en) * | 2011-04-13 | 2014-01-23 | Michael R. Krause | Input/output processing |
EP2730067B1 (en) * | 2011-07-08 | 2015-06-10 | Telefonaktiebolaget L M Ericsson (publ) | Method and apparatus for load balancing |
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 |
WO2013189069A1 (zh) | 2012-06-21 | 2013-12-27 | 华为技术有限公司 | 负荷分担方法及装置、单板 |
US9160497B2 (en) * | 2012-07-02 | 2015-10-13 | Intel Corporation | Application continuity with reroute and reset in a wireless communication network |
US10904075B2 (en) | 2012-07-02 | 2021-01-26 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Preconfigured filters, dynamic updates and cloud based configurations in a network access switch |
US9350656B2 (en) | 2013-01-24 | 2016-05-24 | Knuedge Incorporated | Systems and methods for packet routing |
US8848726B1 (en) | 2013-01-24 | 2014-09-30 | The Intellisis Corporation | I/O data interface for packet processors |
US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
US9571296B2 (en) | 2014-04-30 | 2017-02-14 | Ixia | Methods and apparatuses for abstracting filters in a network visibility infrastructure |
US9967150B2 (en) | 2014-04-30 | 2018-05-08 | Keysight Technologies Singapore (Holdings) Pte. Ltd. | Methods and apparatuses for implementing network visibility infrastructure |
WO2016003454A1 (en) | 2014-07-02 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Managing port connections |
US9906632B2 (en) * | 2014-09-02 | 2018-02-27 | Nicira, Inc. | Method and system for implementing logical port classifications |
US9531590B2 (en) | 2014-09-30 | 2016-12-27 | Nicira, Inc. | Load balancing across a group of load balancers |
US9774537B2 (en) | 2014-09-30 | 2017-09-26 | Nicira, Inc. | Dynamically adjusting load balancing |
US10516568B2 (en) | 2014-09-30 | 2019-12-24 | Nicira, Inc. | Controller driven reconfiguration of a multi-layered application or service model |
US10609091B2 (en) | 2015-04-03 | 2020-03-31 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10284465B2 (en) * | 2015-12-28 | 2019-05-07 | Mellanox Technologies Tlv Ltd. | Efficient algorithmic forwarding in fat-tree networks |
US10833832B2 (en) | 2016-06-22 | 2020-11-10 | Intel Corporation | Communication device and a method for full duplex scheduling |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
US11012420B2 (en) | 2017-11-15 | 2021-05-18 | Nicira, Inc. | Third-party service chaining using packet encapsulation in a flow-based forwarding element |
US10659252B2 (en) | 2018-01-26 | 2020-05-19 | Nicira, Inc | Specifying and utilizing paths through a network |
US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
US10728174B2 (en) | 2018-03-27 | 2020-07-28 | Nicira, Inc. | Incorporating layer 2 service between two interfaces of gateway device |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US11102127B2 (en) * | 2018-04-22 | 2021-08-24 | Mellanox Technologies Tlv Ltd. | Load balancing among network links using an efficient forwarding scheme |
US10944673B2 (en) | 2018-09-02 | 2021-03-09 | Vmware, Inc. | Redirection of data messages at logical network gateway |
US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
US10733131B1 (en) | 2019-02-01 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Target port set selection for a connection path based on comparison of respective loads |
US11042397B2 (en) | 2019-02-22 | 2021-06-22 | Vmware, Inc. | Providing services with guest VM mobility |
US10855580B2 (en) * | 2019-03-27 | 2020-12-01 | Amazon Technologies, Inc. | Consistent route announcements among redundant controllers in global network access point |
JP7351595B2 (ja) * | 2019-06-25 | 2023-09-27 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | ソフトウェア定義型ネットワークにおいて限られた転送ルールで負荷分散を改善するデバイスおよび方法 |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US11283717B2 (en) | 2019-10-30 | 2022-03-22 | Vmware, Inc. | Distributed fault tolerant service chain |
US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
US11153406B2 (en) | 2020-01-20 | 2021-10-19 | Vmware, Inc. | Method of network performance visualization of service function chains |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11277331B2 (en) | 2020-04-06 | 2022-03-15 | Vmware, Inc. | Updating connection-tracking records at a network edge using flow programming |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
CN112737914B (zh) * | 2020-12-28 | 2022-08-05 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、网络设备及可读存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4216465A (en) * | 1978-03-07 | 1980-08-05 | Hughes Aircraft Company | Programmable analog to digital converter |
JP2960437B2 (ja) * | 1989-07-14 | 1999-10-06 | 株式会社日立製作所 | パケット集線装置、それを用いたネットワーク、及びパケット交換システム |
JP3095314B2 (ja) * | 1993-08-31 | 2000-10-03 | 株式会社日立製作所 | パス切替方式 |
JPH08288965A (ja) * | 1995-04-18 | 1996-11-01 | Hitachi Ltd | スイッチングシステム |
JPH10150446A (ja) * | 1996-11-19 | 1998-06-02 | Fujitsu Ltd | Atm交換システム |
JP3655716B2 (ja) * | 1996-12-03 | 2005-06-02 | 富士通株式会社 | 交換機 |
JPH1141242A (ja) * | 1997-07-18 | 1999-02-12 | Fujitsu Ltd | 交換機のパスオーディット制御方法 |
US6570850B1 (en) * | 1998-04-23 | 2003-05-27 | Giganet, Inc. | System and method for regulating message flow in a digital data network |
JP3866425B2 (ja) * | 1998-11-12 | 2007-01-10 | 株式会社日立コミュニケーションテクノロジー | パケットスイッチ |
US6473424B1 (en) | 1998-12-02 | 2002-10-29 | Cisco Technology, Inc. | Port aggregation load balancing |
JP3589149B2 (ja) * | 2000-04-12 | 2004-11-17 | 日本電気株式会社 | Atm交換機の回線切替え用ヘッダ変換回路及びそれに用いるヘッダ変換方法 |
US6731631B1 (en) * | 2000-08-11 | 2004-05-04 | Paion Company, Limited | System, method and article of manufacture for updating a switching table in a switch fabric chipset system |
US7120697B2 (en) * | 2001-05-22 | 2006-10-10 | International Business Machines Corporation | Methods, systems and computer program products for port assignments of multiple application instances using the same source IP address |
US7586909B1 (en) * | 2002-03-06 | 2009-09-08 | Agere Systems Inc. | Striping algorithm for switching fabric |
CN100336363C (zh) | 2002-09-18 | 2007-09-05 | 中兴通讯股份有限公司 | 一种实现聚合链路流量均衡的方法 |
US7313090B2 (en) | 2002-09-26 | 2007-12-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for providing data packet flow control |
US8121043B2 (en) * | 2005-08-19 | 2012-02-21 | Cisco Technology, Inc. | Approach for managing the consumption of resources using adaptive random sampling |
US7843827B2 (en) * | 2005-12-22 | 2010-11-30 | International Business Machines Corporation | Method and device for configuring a network device |
US7768907B2 (en) * | 2007-04-23 | 2010-08-03 | International Business Machines Corporation | System and method for improved Ethernet load balancing |
US9319299B2 (en) * | 2008-01-25 | 2016-04-19 | Alcatel Lucent | Method and apparatus for link aggregation using links having different link speeds |
US8228929B2 (en) * | 2008-10-24 | 2012-07-24 | Juniper Networks, Inc. | Flow consistent dynamic load balancing |
US8005012B1 (en) * | 2009-01-30 | 2011-08-23 | Juniper Networks, Inc. | Traffic analysis of data flows |
-
2008
- 2008-10-24 US US12/257,901 patent/US8228929B2/en active Active
-
2009
- 2009-09-23 CN CN2009101761634A patent/CN101729402B/zh active Active
- 2009-09-24 EP EP09171196.0A patent/EP2180644B1/en active Active
-
2012
- 2012-07-23 US US13/555,828 patent/US8446916B2/en active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105227485A (zh) * | 2011-03-09 | 2016-01-06 | 瞻博网络公司 | 基于流持续时间的用于网络中路径选择的方法和装置 |
CN105227485B (zh) * | 2011-03-09 | 2018-07-13 | 瞻博网络公司 | 基于流持续时间的用于网络中路径选择的方法和装置 |
WO2011127849A3 (zh) * | 2011-05-16 | 2012-04-19 | 华为技术有限公司 | 一种数据流传送方法及网络设备 |
US9331945B2 (en) | 2011-05-16 | 2016-05-03 | Huawei Technologies Co., Ltd. | Method and network device for transmitting data stream |
US9866486B2 (en) | 2011-05-16 | 2018-01-09 | Huawei Technologies Co., Ltd. | Method and network device for transmitting data stream |
CN114513464A (zh) * | 2021-12-31 | 2022-05-17 | 深圳市联洲国际技术有限公司 | 流量负载均衡调度方法、装置、设备及存储介质 |
CN114513464B (zh) * | 2021-12-31 | 2024-03-29 | 深圳市联洲国际技术有限公司 | 流量负载均衡调度方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20100106866A1 (en) | 2010-04-29 |
US8228929B2 (en) | 2012-07-24 |
CN101729402B (zh) | 2013-11-20 |
EP2180644B1 (en) | 2015-12-02 |
EP2180644A1 (en) | 2010-04-28 |
US20120287789A1 (en) | 2012-11-15 |
US8446916B2 (en) | 2013-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101729402B (zh) | 流相容的动态负荷平衡 | |
US6882642B1 (en) | Method and apparatus for input rate regulation associated with a packet processing pipeline | |
US6934250B1 (en) | Method and apparatus for an output packet organizer | |
US6757249B1 (en) | Method and apparatus for output rate regulation and control associated with a packet pipeline | |
US6987735B2 (en) | System and method for enhancing the availability of routing systems through equal cost multipath | |
US7016366B2 (en) | Packet switch that converts variable length packets to fixed length packets and uses fewer QOS categories in the input queues that in the outout queues | |
US7310348B2 (en) | Network processor architecture | |
US8861344B2 (en) | Network processor architecture | |
CN100401791C (zh) | 数据网络节点及交换协议数据单元的方法 | |
US7751319B2 (en) | Method and processor for classifying data packet units | |
CN101827073B (zh) | 跟踪片段数据流 | |
CN103023806B (zh) | 共享缓存式以太网交换机的缓存资源控制方法及装置 | |
CN102084627A (zh) | 通过网络传输数据的方法 | |
US5699520A (en) | Flow control apparatus and method for a computer interconnect using adaptive credits and flow control tags | |
US8363668B2 (en) | Avoiding unfair advantage in weighted round robin (WRR) scheduling | |
CN110351286A (zh) | 一种软件定义网络中链路洪泛攻击检测响应机制 | |
CN109684269A (zh) | 一种pcie交换芯片内核及工作方法 | |
CN111726299B (zh) | 流量均衡方法及装置 | |
US7369495B1 (en) | Method and apparatus for shared shaping | |
CN103152251A (zh) | 一种报文处理方法及装置 | |
CN1973503A (zh) | 流处理 | |
US7079545B1 (en) | System and method for simultaneous deficit round robin prioritization | |
CN105323234A (zh) | 业务节点能力处理方法、装置、业务分类器及业务控制器 | |
Zhang et al. | Congestion-aware adaptive forwarding in datacenter networks | |
Meitinger et al. | A hardware packet re-sequencer unit for network processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: JUNIPER NETWORKS INC. Free format text: FORMER NAME: NETSCREEN TECHNOLOGIES INC. |
|
CP01 | Change in the name or title of a patent holder |
Address after: California, USA Patentee after: Juniper Networks, Inc. Address before: California, USA Patentee before: Jungle network |