CN112119613A - 具有流大小检测器的转发元件数据平面 - Google Patents

具有流大小检测器的转发元件数据平面 Download PDF

Info

Publication number
CN112119613A
CN112119613A CN201980022088.8A CN201980022088A CN112119613A CN 112119613 A CN112119613 A CN 112119613A CN 201980022088 A CN201980022088 A CN 201980022088A CN 112119613 A CN112119613 A CN 112119613A
Authority
CN
China
Prior art keywords
data
message
fsdd
flow
stream
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.)
Pending
Application number
CN201980022088.8A
Other languages
English (en)
Inventor
G·尼古拉迪斯
李正根
M·M·贾瓦迪
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.)
Barefoot Networks Inc
Original Assignee
Barefoot Networks Inc
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 Barefoot Networks Inc filed Critical Barefoot Networks Inc
Publication of CN112119613A publication Critical patent/CN112119613A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • 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/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • 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]
    • 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/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • 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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明的一些实施例提供一种数据平面转发电路(数据平面),其具有为它处理以用于在网络中转发的所有或一些数据消息流生成流大小密度分布的流大小检测电路。在一些实施例中,流大小(FS)检测电路生成关于处理后的数据消息流的统计值,并且基于这些统计值,它生成表示流大小范围中的不同流大小子范围中的流数量的FS密度分布。在一些实施例中,密度分布是基于流大小检测电路为被处理以用于在网络内转发的数据消息流生成的概率统计值的概率密度分布。在一些实施例中,FS检测电路通过从数据消息流的头值生成哈希值,并在生成的哈希值所识别的存储器位置处累计流大小值,来生成用于数据消息流的概率统计值。在一些实施例中,对于不同数据消息流生成的哈希可能碰撞,这导致所累计的流大小值是可能具有特定等级的不准确性的概率值。

Description

具有流大小检测器的转发元件数据平面
背景技术
交换机需要转发具有不同要求的流的分组。虽然大多数流具有适中的吞吐量需求,但是少数流通常占用大部分可用容量。这些流称为高命中项(heavy hitter)。当没有限制时,高命中项导致所有流的丢包以及队列的堆积。因此,期望识别高命中项,并通过使用诸如公平分组丢弃、优先级排队等技术来减轻它们对其他流的完成时间的不利影响。
发明内容
本发明的一些实施例提供一种数据平面转发电路(数据平面),其具有为它处理以用于在网络中转发的所有或一些数据消息流生成流大小密度分布的流大小检测电路。为了执行其转发操作,数据平面包括若干数据消息处理级,它们被配置为处理与数据平面接收到的数据消息关联的数据元组。在一些实施例中,数据平面消息处理级的部分还被配置为实现流大小检测电路。在其他实施例中,数据平面具有专用流大小检测电路,其对于流大小检测操作不使用改变用途的消息处理级。
在一些实施例中,数据平面的消息处理级的操作由本地或远端控制平面来配置。在一些实施例中,转发元件的一个或多个通用处理器(例如,CPU)执行的控制软件层实现本地控制平面,而另一转发元件或远端计算机(例如,服务器)的一个或多个CPU执行的控制软件层实现远端控制平面。
在一些实施例中,流大小(FS)检测电路生成关于处理后的数据消息流的统计值,并且基于这些统计值,它生成表示流大小范围中的不同流大小子范围中的流数量的FS密度分布。在一些实施例中,密度分布是基于流大小检测电路为被处理以用于在网络内转发的数据消息流生成的概率统计值的概率密度分布。在一些实施例中,FS检测电路通过从数据消息流的头值生成哈希值,并在生成的哈希值所识别的存储器位置处累计流大小值,来生成用于数据消息流的概率统计值。在一些实施例中,对于不同数据消息流所生成的哈希可能碰撞,这导致所累计的流大小值是可能具有特定等级的不准确性的概率值。
FS检测电路产生的密度分布是在可编程时间段上定义的FS密度分布(FSDD)。例如,流大小检测电路产生表示在第一时间段期间不同流大小子范围中的处理后的流的数量的第一FS密度分布,然后产生表示在第二时间段期间不同流大小子范围中的流数量的第二FS密度分布。
在一些实施例中,转发元件的控制平面通过数据平面的控制平面接口获取数据平面的FS检测电路产生的FS密度分布。在其他实施例中,数据平面具有消息生成器,其生成数据消息,FS检测电路以它产生的FS密度分布填充数据消息。在一些实施例中,数据平面然后通过其控制平面接口将这些FSDD填充的数据消息转发到其转发元件的控制平面。在其他实施例中,数据平面通过网络将这些FSDD填充的数据消息转发到与网络转发元件分离的机器。
为了针对特定时间段产生FS密度分布,FS检测电路使用两个不同的FS分布跟踪器。第一分布跟踪器是当前消息FS分布跟踪器,其基于作为特定消息流的一部分的当前所处理的消息的净荷大小更新第一FSDD寄存器中针对特定时间段所存储的第一FSDD。第二分布跟踪器是先前消息FS分布跟踪器,其更新第二FSDD寄存器中所存储的第二FSDD,以便取消在该时间段期间对于每个所处理的消息流,关于多个消息对第一FSDD寄存器的冗余更新。
更具体地说,每个FSDD寄存器具有若干单元,其中,每个单元对应于FS值的不同子范围。为了关于作为特定消息流的一部分的当前消息更新第一FSDD寄存器,第一分布跟踪器将对应于FS检测电路在特定时间段中针对特定消息流维护的第一流大小的第一FSDD寄存器单元中所存储的值递增1。第一流大小包括当前消息的净荷大小。
如上所述,在一些实施例中,流大小检测电路维护用于数据平面在每个特定时间段中处理的每个特定消息流的概率流大小。在特定时间段期间,FS检测电路可能处理特定消息流的多于一个消息。对于这些消息中的每一个消息,第一分布跟踪器更新第一FSDD寄存器中的第一FSDD。除了当随后更新递增与随后的FS范围关联的随后寄存器单元以指示特定数据消息流的流大小已经从一个FS子范围去往另一FS子范围之外,在特定时间段中对于特定消息流的第一更新之后的每个更新是冗余的。
因此,为了考虑在特定时间段期间关于一个特定数据消息流对第一FSDD寄存器的多个冗余更新,FS检测电路使用第二分布跟踪器。为了对于当前消息更新第二FSDD寄存器,在处理接收到的消息之前,第二分布跟踪器将对应于FS检测电路针对特定消息流维护的第二流大小的第二FSDD寄存器单元中所存储的值递增1。在一些实施例中,第二分布跟踪器通过从流检测电路关于当前消息产生的第一流大小减去当前消息的净荷大小,来计算第二流大小。用于特定时间段的FSDD是第一FSDD寄存器的第一FSDD减去第二FSDD寄存器的第二FSDD。因此,基于当前消息对第二FSDD的更新旨在从用于特定时间段的FSDD消除特定数据消息流的任何先前消息对第一FSDD的任何先前贡献。
前面的发明内容旨在充当对本发明的一些实施例的简要介绍。这并不意味着是对本件中所公开的所有发明主题的介绍或概述。以下的具体实施方式和具体实施方式中引用的附图将进一步描述发明内容中所描述的实施例以及其他实施例。因此,为了理解本件所描述的所有实施例,需要对发明内容、具体实施方式和附图的完整阅读。此外,所要求保护的主题不受限于摘要、具体实施方式和附图中的说明性细节,而是由所附权利要求限定,因为所要求保护的主题可以通过其他特定形式体现而不脱离主题的精神。
附图说明
在所附权利要求书中阐述本发明的新颖特征。然而,出于解释的目的,在以下附图中阐述本发明的若干实施例。
图1示出由网络转发元件的数据平面执行,以便检测数据平面所处理的大数据消息流的一些实施例的过程。
图2示出使用由两组不同的哈希值寻址的两组不同的哈希寻址表的示例。
图3示出在第一组哈希表中累计用于三个不同消息流的三个不同消息的统计的示例。
图4示出图2的两组哈希寻址表的周期性重置以及两组哈希寻址表中的每一组的仅累计时段以及累计和访问时段。
图5示出接收到的数据消息的示例。
图6示出具有数据平面电路的转发元件的示例,数据平面电路可以被配置为实现检测数据平面中的高命中项(HH)流的HH检测器。
图7示出一些实施例在匹配动作单元中用以实现HH检测器的各种组件的有状态存储器和处理单元的示例。
图8提供一些实施例中的HH检测器的过程的概念说明。
图9示出可以被配置为实现FS检测电路的数据平面的示例。
图10示出FS检测电路在一些实施例中执行以处理数据平面接收的数据消息的过程。
图11-图13示出FS检测电路对一个时间间隔中所处理的三个数据消息执行的操作。
图14示出说明一些实施例中的数据平面的两个匹配动作单元(MAU)级如何实现FS检测电路的过程。
图15示出实现FS检测电路的两个MAU级。
具体实施方式
在本发明的以下详细描述中,阐述并描述了本发明的大量细节、示例和实施例。然而,对于本领域技术人员而言将显而易见的是,本发明不限于所阐述的实施例,并且可以在没有所讨论的一些具体细节和示例的情况下实践本发明。
本发明的一些实施例提供一种用于识别网络转发元件所处理的大数据消息流的方法。对于转发元件接收到的数据消息,该方法生成两组存储地址值。为了考虑接收到的数据消息,该方法递增两组生成的地址值所识别的两组存储位置中所存储的统计值。基于将两组存储位置之一识别为存储必须关于消息进行分析的统计值的存储位置集的一组交错准则,该方法然后分析所识别的存储位置集所存储的统计值,以确定消息是否是大流的一部分。如果该方法确定数据消息是大流的一部分,则该方法于是将数据消息认定为作为大流的一部分的消息。
在一些实施例中,所生成并分析的统计值是概率值。这些概率值不是通过使用确定性计算模型计算出的确定性统计值。而是,通过使用定义为传达事件以某个等级的概率发生(在此情况下为数据消息流是大数据消息流的一部分的可能性)的概率计算模型计算概率值。不同实施例使用不同概率计算模型来确定数据消息流是否是大数据消息流的一部分。例如,如以下进一步描述的那样,一些实施例使用最小计数图(count-min sketch)模型进行该确定。然而,本领域技术人员将理解,其他实施例使用其他概率计算模型。
在本文件中,大数据消息流称为高命中项流。在一些实施例中,高命中项(HH)流是在特定持续时间(例如,1ms)内超过特定数量的消息或特定量的消息净荷(例如,50-100KB)的流。其他名称(例如,兆流、大象流等)也可以指代高命中项流。此外,在本文件中,数据消息指代在网络上发送的特定格式的比特集合。本领域技术人员将认识到,术语数据消息可以在本文中用以指代可以在网络上发送的各种格式的比特集合(例如,以太网帧、IP分组、TCP段、UDP数据报等)。此外,如本文件中所使用的那样,对L2、L3、L4和L7层(或层2、层3、层4和层7)的引用分别是对OSI(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。
图1概念性地示出在一些实施例中网络转发元件的数据平面执行,以便检测数据平面所处理的大数据消息流(即,称为高命中项、兆流、大象流等的流)的过程100。通过使用该过程100,在一些实施例中,数据平面在两个或更多个存储位置集中累计用于每个所处理的数据消息流的概率统计值。数据平面以交错方式重置并读取存储位置集,以确保每个存储位置集在被重置之后被给予仅累计时间段,在该仅累计时间段期间,它累计概率统计值而不进行读取。在这种交错方法下,过程100在任何给定时间,对于接收到的数据消息,从与数据消息关联的两个或更多个存储位置集仅读取一个存储位置集(即,从中分析概率值)。
对于接收到的数据消息,该方法基于与数据消息关联的一组标识符(在105)生成若干组地址值。在一些实施例中,每个所生成的地址值是哈希生成器从接收到的数据消息的数据消息的流标识符(例如,五元组标识符)生成的哈希值。例如,为了生成每组哈希地址值,过程100在一些实施例中使用多个哈希生成器从数据消息的五元组标识符(即,数据消息的头中所指定的源和目的地IP地址、源和目的地端口地址和协议)生成多个哈希地址值。在其他实施例中,过程100使用一个哈希生成器从数据消息的流标识符生成一个哈希值,然后使用所生成的哈希值的若干不同部分来指定若干哈希地址值。
每组所生成的地址识别若干组存储中的若干位置。图2示出使用由两组不同的哈希值215和220寻址的两组不同的哈希寻址表205和210的示例。在该示例中,两组哈希值215和220是由两组哈希生成器225和230从数据消息的五元组标识符240生成的。如所示,每组225或230中的每个所生成的哈希值识别每个哈希表集205和210的一个哈希表中的存储位置。具体地说,集合215中的三个所生成的哈希地址值分别识别第一组表205中的三个位置242、244和246,并且集合220中的三个所生成的哈希地址值分别识别第二组表210中的三个位置252、254和256。
在从接收到的数据消息的标识符集(在105)生成地址值之后,过程100(在110)递增在生成的地址值所识别的存储位置处存储的若干概率统计值。图2示出将接收到的数据消息的字节计数与第一组表205中的三个位置242、244和246和第二组表210中的三个位置252、254和256处所存储的字节计数值相加。然而,其他实施例在哈希寻址的存储位置中累计并存储其他消息属性,或者甚至仅累计并存储数据消息的数量。
在图2所示的方法下,可能发生哈希碰撞,这将于是使两个不同消息流的两个碰撞哈希值所识别的存储位置处所维护的统计不准确。图3示出在第一组哈希表205中累计用于三个不同消息流的三个不同消息305、310和315的统计的示例。在该示例中,除了碰撞以识别同一位置318的第二消息310和第三消息315的第三散列之外,每个消息的五元组标识符被散列化到唯一存储位置302、304、306、308、312、314或316。因此,在该示例中,第一哈希表集205的第三表的存储位置318处所维护的数据被破坏,因为它包括为第二数据消息流和第三数据消息流二者所累计的统计。
然而,处理因哈希碰撞而导致的累计统计不准确性被构造到图2的概率统计累计模型中。如以下进一步描述的那样,图2的概率统计累计模型通过使用为了确定数据消息是否是HH流的一部分而在哈希表集之一的哈希寻址的存储位置中为数据消息所存储的最小字节计数,来解决因哈希碰撞导致的不准确性。该方法是最小计数图方法,其中,每个哈希寻址表维护处理后的数据消息流的统计图,并在任何给定时间,使用用于每个数据消息流的最小生成计数来评估流的HH状态。
在(在110)递增在生成的地址值所识别的存储位置处存储的若干概率统计值之后,过程100(在115)将存储位置集之一识别为存储概率统计值以分析接收到的数据消息的存储位置集。如上所述,数据平面周期性地重置不同的存储位置集,但在不同时间重置它们,使得在重置之后,每个存储位置集先在仅累计时段中操作以存储概率统计值,然后在累计和访问时段中操作,在累计和访问时段中,它能够被读取以确定数据消息是否是大数据消息流的一部分。
图4示出图2的两组哈希寻址表205和210的周期性重置以及两个哈希寻址表集中的每一个的仅累计时段以及累计和访问时段。在该示例中,仅累计时段称为仅写入时间段,而累计和访问时段称为读取-写入时间段。如所示,数据平面每2ms周期性地重置每个表集,但使该重置交错,使得在每个2ms时段中,第一表集205对于第一个1ms子时段操作在仅写入模式下,对于第二个1ms子时段操作在读取-写入模式下,而第二表集210对于第一个1ms子时段操作在读取-写入模式下,对于第二个1ms子时段操作在仅读取模式下。
因此,虽然一个存储位置集在重置之后操作在其仅写入第一时段中,但另一存储位置集操作在读取-写入第二时段中,以存储概率统计值,并提供所存储的概率统计值以确定任何数据消息是否是大数据消息流的一部分。因此,当过程100在该方法下接收到数据消息时,过程生成第一组存储地址值和第二组存储地址值(例如,两组哈希值),并在若干生成的哈希值所识别的若干位置处递增这两个表集205和210中所存储的概率统计值,以便考虑接收到的数据消息。然而,为了在任何给定时间确定接收到的数据消息是否是HH流的一部分,过程100仅分析在该时间正操作在其读取-写入时段中的表集的寻址位置处所存储的统计值。
在将存储位置集之一(在115)识别为存储概率统计值以分析接收到的数据消息的存储位置集之后,过程(在120)分析在所识别的存储位置集处,在110递增的位置处(即,在105生成的地址所指定的位置处)所存储的概率统计值,以确定数据消息是否应当被认定为HH流的一部分。
图5示出在时间t1接收到数据消息的示例。此时,第一组哈希表205操作在其读取-写入模式下。因此,为了确定接收到的数据消息是否应当被认定为HH流的一部分,在与接收到的数据消息关联的三个存储位置处(即,该组表205中的在105关于接收到的数据消息生成的地址所指定的位置处)读取该集205的三个哈希表205。在该示例中,三个读取的数据值是三个字节计数值,它们被提供给最小计数选择器/比较器505。该模块选择三个字节计数值中的最小值,然后确定该最小值是否超过阈值字节计数。
当情况如此时,假设是这样的:数据消息属于HH流,因为虽然任何一个或两个哈希寻址位置可能在多个不同流之间面临哈希碰撞,但所有三个哈希寻址位置被破坏的几率是非常低的。此外,具有最小字节计数值的位置最不可能已经被破坏。这是因为,被破坏的位置将必定具有更大的字节计数,因为它们的字节计数将考虑来自与接收到的数据消息相同的流的消息的字节计数以及其他碰撞消息流的字节计数。另一方面,具有最小字节计数值的位置将或许仅反映用于接收到的消息流的字节计数。
本领域技术人员将意识到,在其他实施例中,过程100不使用图5中的最小计数选择器/比较器505。例如,如以下进一步描述的那样,在一些实施例中,过程100由有状态算术逻辑单元(ALU)来实现,有状态ALU在关于数据消息递增它们各自的概率统计值之后,执行阈值化操作,以确定它们各自的递增值是否超过阈值,如果是,则输出一比特,以指示:根据它们的记录,数据消息是HH流。在这些实施例中,当从所有有状态ALU输出的比特指示数据消息是HH流的一部分时,数据消息被认定为HH流的一部分。
在(在120)分析在所识别的存储位置集处存储的概率统计值之后,过程(在125)确定数据消息是否应当被认定为HH流的一部分。如果否,则过程结束。否则,过程(在130)将数据消息认定为HH流的一部分。图5通过呈现消息认定器510示出该情况,消息认定器510(1)从最小计数选择器/比较器505接收HHD设置位(其指示三个字节计数均超过了阈值),并且(2)将数据消息关联于HHD设置标签515(例如,将该标签插入数据消息的头或数据消息的头矢量中),HHD设置标签515指明数据消息是HH流的一部分。如以下进一步描述的那样,这个HHD认定可以然后由网络转发元件的其他组件或由其他网络转发元件或中间盒(middlebox)服务用以对数据消息执行操作。在130之后,过程100结束。
图6示出具有数据平面电路620的转发元件600的示例,数据平面电路620可以被配置为实现检测数据平面中的HH流的HH检测器650。转发元件600在网络610内转发数据消息。转发元件600可以是任何类型的转发元件(例如,交换机、路由器、网桥等)。在图6中,转发元件被部署为网络的内部中的非边缘转发元件,用于将数据消息从源设备605转发到目的地设备607。
在其他情况下,转发元件600被部署为网络的边缘处的边缘转发元件,用于连接到充当数据消息的源和目的地的计算设备(例如,独立或主机计算机)。作为非边缘转发元件,转发元件600在网络中的转发元件之间(即,通过中介网络构造610)转发数据消息。作为边缘转发元件,转发元件将去往和来自边缘计算设备的数据消息转发到彼此、其他边缘转发元件和/或非边缘转发元件。
如所示,转发元件600包括(1)数据平面电路620(“数据平面620”),其执行转发元件600的转发操作以将转发元件接收到的数据消息转发到其他设备;和(2)控制平面电路625(“控制平面625”),其配置数据平面电路。转发元件600还包括物理端口612,其从转发元件600外部的设备接收数据消息,并将数据消息发送到转发元件600外部的设备。
控制平面625配置数据平面620。在一些实施例中,控制平面包括(1)一个或多个处理器(例如,具有多个处理核或单元的微处理器),其执行指令的;和(2)存储器,其存储用于过程的指令,指令当由处理器执行时执行控制平面操作。这些指令可以由以下项指定:(1)包括控制平面625和数据平面620的网络转发元件600的制造商、(2)部署和维护网络转发600的网络管理员、或(3)在监控网络状况的服务器和/或网络转发元件上执行的一个或多个自动化过程。控制平面处理器或控制平面的另一电路通过控制/数据平面接口与数据平面进行通信(例如,以配置数据平面,或从数据平面接收统计)。
数据平面电路620包括端口615,其接收数据消息以处理数据消息并在数据消息被处理之后发送它们。数据平面620的一些端口615与转发元件600的物理端口612关联,而其他端口615与数据平面620的其他模块关联。数据平面620还包括消息生成器635、多个入口管线级640、多个出口管线级642和业务管理器644。在一些实施例中,数据平面实现于专用集成电路(ASIC)上,并且其组件定义于该集成电路上。
消息生成器在数据平面中生成消息。在一些实施例中,这些消息可以引导数据平面中的电路执行特定操作(例如,重置存储所累计的概率统计的存储)或在消息中存储数据(例如,所累计的概率统计),以用于通过网络导出到控制平面或另一设备。入口和出口管线处理转发元件接收到的数据消息,以便将这些消息转发到它们在网络中的目的地。在一些实施例中,业务管理器644包括交叉开关,其将消息从入口管线引导到出口管线。
每个入口或出口管线包括若干可配置(即,可编程的)消息处理级632,其可以被配置为执行转发元件600的数据平面转发操作,以处理数据消息并将它转发到它们的目的地。这些消息处理级通过处理与数据平面620接收到的数据消息关联的数据元组(例如,消息头)以便确定如何转发消息,来执行这些转发操作。
在该示例中,消息处理级是匹配动作单元(MAU)632。如以下参照图7进一步描述的那样,MAU在一些实施例中是包括匹配表的电路,匹配表存储用于与处理后的数据消息的数据元组(例如,头矢量)匹配的多个记录。当数据消息与匹配记录匹配时,MAU于是执行与所识别的匹配记录关联的动作记录(例如,所识别的匹配记录所识别的动作记录)所指定的动作。
在一些实施例中,MAU还包括一组ALU(例如,四个ALU),其基于由头矢量和/或匹配表所指定的参数执行算术操作。ALU可以将其操作的结果存储在它们访问的有状态表中,和/或可以(例如,直接地,或者通过引导另一动作ALU将这些结果写入头矢量中)将这些结果写入头矢量中,以用于其他MAU级进行处理。
除了MAU级之外,每个入口或出口管线还包括解析器630和逆解析器634。管线的解析器630从管线接收的数据消息提取消息头,以用于处理。在一些实施例中,所提取的头是头矢量(HV)的格式,作为其消息处理操作的一部分,HV由相继消息处理级632处理,并在一些情况下修改。当管线的消息处理级632对头矢量进行操作,管线的解析器630将消息的净荷传递到逆解析器634。在一些实施例中,解析器还将消息头连同净荷一起传递到逆解析器634(即,解析器将整个消息传递到逆解析器)。
当管线完成处理数据消息,并且消息必须提供给业务管理器(在入口管线的情况下)或端口615(在出口管线的情况下)以转发到消息的下一跳(例如,到其目的地计算节点或下一个转发元件)时,在一些实施例中,管线的逆解析器634从管线的最后消息处理级所处理的消息的头矢量产生数据消息头,并组合该头与数据消息的净荷。在一些实施例中,逆解析器634使用从解析器630接收到的头的一部分来从其关联头矢量重构消息。
如图6所示,一个或多个数据平面组件被配置为实现高命中项检测器650。HH检测器650检查数据平面所处理的每个数据消息的头矢量,以确定数据消息是否是HH流的一部分。如果是,则它标记数据消息的头矢量,使得一个或多个随后消息处理级能够对数据消息执行操作。如上所述,这些操作的示例包括:(1)将数据消息的镜像副本发送到网络中的服务器集群或设备集群,(2)对数据消息执行ECMP操作,其将大HH流拆分为若干较小流,这些流采用去往大流的目的地的不同的等价路径,以及(3)(例如,通过使用诸如公平消息丢弃、优先级排队等技术)执行操作,以减轻大流对其他流的完成时间的不利影响。它们还包括:将该认定嵌入数据消息的头中,然后将数据消息转发到另一转发元件、终端计算节点(例如,服务器)或基于其头中的认定对数据消息执行操作的电器。
该图从概念上示出HH检测器650的组件具有统计累计器652、统计存储654、统计分析器656、重置电路658和消息认定器660。在一些实施例中,统计累计器652对于数据平面处理的每个数据消息流,递增统计存储654中所维护的概率统计值。另一方面,统计分析器656比较所累计的统计与阈值,以确定处理后的数据消息是否应当被认定为HH流的一部分。当分析器656确定为数据消息所累计的统计超过阈值时,消息认定器660标记数据消息的头矢量,以指示它属于HH流。
在一些实施例中,至少两个MAU级的有状态ALU在两组四个有状态ALU表(其类似于第一表集205和第二表集210,除了每个集包括MAU级的四个有状态ALU所维护的四个有状态表之外)中累计并分析用于数据消息流的概率统计值。换言之,在一些实施例中,统计累计器652和统计存储654由两个MAU级632的有状态ALU和有状态ALU表来实现,而统计分析器656由这两个MAU级的动作ALU来实现。
具体地说,在一些实施例中,这两个MAU级中的每一个的四个有状态ALU中的每一个在其各自的有状态表中累计概率统计值,并将所累计的概率统计值输出到其MAU级中的动作ALU。对于数据消息,MAU级的动作ALU确定四个有状态ALU中的每一个关于数据消息所输出的每个累计的概率统计值是否超过阈值。如果是,则MAU级的动作ALU在数据消息的头矢量中记录HH位,使得随后MAU级可以基于此设置对数据消息执行操作。该阈值化操作是执行最小计数图确定的不同于图5所示的方法的替选方法。具体地说,代替识别最低统计值并比较该值与阈值,一些实施例的动作ALU确保所有输出的统计值超过阈值。如果是,则最低值必然超过阈值。
在一些实施例中,当动作ALU的MAU的统计存储正操作在其读取/写入周期中时,动作ALU执行该阈值化操作。当MAU的统计存储操作在其仅写入周期中或它正在被重置时,在一些实施例中,动作ALU不执行其阈值化操作。此外,一些实施例将用于数据消息的阈值嵌入数据消息的头矢量中。例如,一些实施例不对于所有数据消息(例如,流中的所有数据消息)使用一个静态阈值,而是在MAU级的读取-写入周期期间随时间的流逝调整(例如,增加)阈值。如以下参照图8进一步描述的那样,在这些实施例中的一些实施例中,较早MAU级计算用于数据消息的阈值,并将该阈值嵌入数据消息的头矢量中,以用于关于该数据消息实现统计分析器656的MAU级进行随后处理。
本领域技术人员将认识到,其他实施例在数据平面中不同地实现统计累计器652、统计存储654和统计分析器656。例如,其他实施例以不同数量的级和/或不同数量的有状态ALU和有状态表实现这些组件。此外,其他实施例不同地实现阈值化操作,例如,使一个级的有状态ALU实现统计累计器和分析器两者,或者使另一MAU的有状态ALU或动作ALU实现统计分析器。
重置电路658周期性地重置每组收集统计的有状态ALU表,以便确保统计存储654不变为陈旧的。如上所述,所存储的概率统计值在最小计数图模型中仅有效达短持续时间(例如,达2ms)。在一些实施例中,消息生成器635用以实现重置电路。具体地说,在一些实施例中,控制平面625配置或引导消息生成器635周期性地生成引导HHD实现MAU重置存储在其存储了所生成的概率统计值的有状态表中的值的消息。当多个MAU实现不同的多组统计表时,在一些实施例中,消息生成器在不同时刻关于不同MAU生成不同消息,以确保没有实现两组不同表的两个MAU同时重置它们的统计表。在一些实施例中,消息生成器635所生成的消息由入口和出口管线以与转发元件通过其端口612接收的消息相同的方式来处理。
图7示出一些实施例在匹配动作单元632中用以实现HH检测器650的各种组件的有状态存储器和处理单元的示例。如上所述,在一些实施例中,入口管线640或出口管线642具有若干MAU级632,每一级包括消息处理电路,以用于转发接收到的数据消息和/或基于与数据消息关联的头矢量执行有状态操作。在一些实施例中,转发元件600的控制平面625或远端控制平面将数据平面620的MAU级632配置为不仅实现这些MAU级的转发操作,而且还实现一些MAU级632执行的HH检测操作。通过处理存储在头矢量中的为数据消息所生成的值来执行这些操作。
数据平面的用于存储它从处理较早数据消息生成的数据以用于处理随后数据消息的能力实现数据平面的有状态操作。为了执行有状态HH检测操作,在一些实施例中,HHD实现MAU级632使用它们的有状态ALU 710和它们的关联有状态表715,如图7所示。
除了有状态ALU 710和有状态表715之外,在一些实施例中,MAU级632还具有一组一个或多个匹配表705、动作交叉开关730、动作参数存储器720、动作指令存储器725和动作ALU 735。匹配表集705可以比较接收到的消息的头矢量中的一个或多个字段,以识别一个或多个匹配流条目(即,与消息的HV匹配的条目)。在一些实施例中,匹配表集705可以包括TCAM表或精确匹配表。在一些实施例中,可以在作为从消息的头矢量的一个或多个字段提取的值的地址处访问匹配表集,或者它可以是该所提取的值的散列。在一些实施例中,本地控制平面或远端控制平面提供流条目(例如,流匹配标识符和/或动作标识符),以存储在一个或多个匹配表和关联动作表中。
在一些实施例中,存储在匹配表记录中的、与消息的流属性匹配的或者在从一个或多个消息流属性哈希生成的地址处访问的值提供要在动作参数存储器720和动作指令存储器725中访问的记录的地址。MAU级632所执行的动作可以包括转发元件必须对接收到的数据消息执行以处理数据消息(例如,丢弃消息,或将消息转发到其目的地机器或其他中介转发元件)的动作。
此外,在一些实施例中,存储在匹配表记录中的、与消息的流标识符匹配的或者在哈希生成的地址处访问的值可以提供用于有状态表集715中的一个或多个记录的地址和/或参数,并且可以提供用于有状态ALU 710集合的指令和/或参数。如所示,有状态ALU 710和有状态表715还接收处理后的消息的头矢量。头矢量可以包括用于有状态ALU的指令和/或参数,同时包含用于有状态表715的地址和/或参数。
在一些实施例中,有状态ALU 710执行一个或多个有状态操作,而有状态表715存储有状态ALU 710所使用和生成的状态数据。在一些实施例中,有状态ALU与消息处理管线的数据流同步地(即,按数据平面620的数据线速率同步地)执行操作。因此,有状态ALU可以在每一时钟周期处理不同的头矢量,由此确保有状态ALU将能够与消息处理管线的数据流同步地进行操作。
在一些实施例中,本地或远端控制平面提供配置数据,以对数据平面620的MAU632的有状态ALU 710进行编程。有状态ALU 710将动作参数输出到动作交叉开关730。动作参数存储器720还将动作参数输出到该交叉开关730。动作参数存储器720从匹配表集705提供的地址所识别的其记录获取它输出的动作参数。在一些实施例中,动作交叉开关730将从有状态ALU 710和动作参数存储器720接收到的动作参数映射到动作ALU 735的动作参数总线740。该总线将动作参数提供给该ALU 735。对于不同的数据消息,动作交叉开关730可以将来自有状态ALU 710和存储器720的动作参数不同地映射到该总线740。交叉开关可以将来自这些源中的任一源的动作参数完整地提供给该总线740,或者它可以同时地选择这些参数的不同部分以用于该总线。
动作ALU 735还从动作指令存储器725接收要执行的指令。该存储器725从匹配表集705提供的地址所识别的其记录获取指令。动作ALU 735还接收用于MAU处理的每个消息的头矢量。该头矢量可以还包含部分或全部要处理的指令和/或用于处理指令的参数。
在一些实施例中,动作ALU 735是超长指令字(VLIW)处理器。动作ALU 735基于在动作参数总线740上接收到的或头矢量中所包含的参数来执行(来自指令存储器725或头矢量的)指令。动作ALU将其操作的输出存储在头矢量中,以实行其MAU级632的消息转发操作和/或有状态操作。动作ALU的输出形成用于下一MAU级或逆解析器的修改后的头矢量(HV')。在一些实施例中,这些动作的示例包括:将处理后的数据消息认定为HH流的一部分。
在其他实施例中,也可以通过其他方法访问MAU级632的匹配表705和动作表715、720和725。例如,在一些实施例中,可以通过直接寻址方案、间接寻址方案和独立寻址方案对每个动作表715、720或725进行寻址。所使用的寻址方案取决于MAU级的配置,在一些实施例中,该配置对于被处理的所有数据消息是固定的,而在其他实施例中,对于被处理的不同数据消息可以是不同的。
在直接寻址方案中,动作表使用用以对匹配表集705中的匹配流条目进行寻址的相同地址。如在匹配表705的情况下那样,该地址可以是哈希生成的地址值或来自头矢量的值。具体地说,用于动作表的直接地址可以是MAU的哈希生成器(未示出)通过对来自消息的头矢量的一个或多个字段的值进行散列化而生成的哈希地址。替代地,该直接地址可以是从头矢量的一个或多个字段提取的值。
另一方面,间接寻址方案通过使用从关于消息的头矢量在匹配表集705中所识别的一个或多个记录提取的地址值访问动作表。如上所述,在一些实施例中,匹配表记录是通过直接寻址或记录匹配操作来识别的。
独立寻址方案与直接寻址方案相似,除了它不使用用以访问匹配表集705的相同地址之外。类似于直接寻址方案,独立寻址方案中的表地址可以是从消息的头矢量的一个或多个字段提取的值,或者它可以是对该提取值的散列。在一些实施例中,不是所有动作表715、720和725都可以通过这三种寻址方案来访问,例如,在一些实施例中,动作指令存储器725仅通过直接和间接寻址方案来访问。此外,其他寻址方案也用以对一些表(例如,动作表)进行寻址。
如上所述,至少两个MAU级632的有状态ALU 710对于数据消息流在它们各自的有状态ALU表715中累计并分析概率统计值。基于其MAU的哈希生成器(未示出)生成的哈希地址值,每个HHD实现MAU级的每个有状态ALU 710在其相应有状态表715中累计概率统计值,并将所累计的概率统计值输出到其MAU级中的动作ALU 735。对于数据消息,动作ALU 735确定四个有状态ALU 710中的每一个关于数据消息所输出的每个累计的概率统计值是否超过阈值。如果是,则动作ALU在数据消息的头矢量中记录HH位,使得随后MAU级可以基于此设置对数据消息执行操作。如上所述,在一些实施例中,动作ALU仅当其MAU的有状态表715操作在它们的读取/写入周期中时执行该阈值化操作(即,当有状态表715操作在它们的仅写入周期中或它们正在被重置时,不执行其阈值化操作)。
图8概念性地示出在一些实施例中HH检测器650执行的过程800。在一些实施例中,对于数据平面620所处理的每个接收到的数据消息执行过程800。如所示,数据平面620初始地(在805)生成入口时间戳,以指明转发元件或入口管线接收到数据消息的时间。在一些实施例中,该时间戳可能被截短,以量化处理后的时间戳值(即,降低其分辨率)。
接下来,在810,数据平面中的模块(例如,MAU级)计算用于接收到的数据消息的年龄值。在一些实施例中,年龄值取决于当前正操作在其读取/写入模式下的有状态表集的年龄(即,自从重置该有状态表集的最后时刻起已经经过的持续时间)。例如,该年龄计算为时间戳与当前正操作在其读取/写入模式下的有状态表集的最后重置的时间之间的差值。
在815,过程800对于接收的数据消息动态地指定阈值。为此,在一些实施例中,计算消息年龄的MAU使用计算出的年龄从对于不同年龄范围指定不同阈值的查找表查找(即,获取)阈值。在一些实施例中,控制平面将MAU级配置有该查找表。该MAU级然后将所识别的阈值(在815)写入消息的头矢量中。
每个HHD实现MAU具有一个或多个哈希生成器,其(在820)生成指定该MAU的四个有状态表715中的四个地址位置的四个哈希值。在825,每个HHD实现MAU的四个有状态ALU 710递增存储在四个有状态表715中所识别的四个位置处的字节计数,并读回所递增的字节计数值。当接收到的数据消息的头矢量到达该MAU时,每个这样的MAU执行操作820和825。换言之,即使图8一起示出两个HHD实现MAU操作,本领域技术人员也将意识到,这仅是概念性表示,意在简化过程800的操作的说明。
从操作在其读取/写入模式下的有状态表集715读回的字节计数值(在830)提供给其对应的动作ALU 735,然后动作ALU 735(在835)比较这些值中的每一个与从其头矢量获得的消息的阈值。当所有这些值超过阈值时,动作ALU(在835)在头矢量中存储用于指示数据消息属于HH流的位。在835之后,过程结束。
如上所述,数据平面620的一个或多个随后消息处理级使用数据消息的头矢量中的HH认定,以对数据消息执行一个或多个操作。这些操作包括:(1)将数据消息的镜像副本发送到网络中的服务器集群或设备集群,(2)对数据消息执行ECMP操作,其将大HH流拆分为若干较小流,这些流采用去往大流的目的地的不同等价路径,以及(3)执行操作以减轻大流对其他流的完成时间的不利影响。可以执行以减轻HH流的不利影响的操作的示例包括:业务管理器644丢弃来自HH流的消息,以便减少业务管理器丢弃较小流的机会。相反,HH认定可以用以确保HH流得以提供优于其他流的优先转发。
数据消息的头矢量中的HH认定也可以使得:在将数据消息转发到基于其头中的认定对数据消息执行操作的另一转发元件、终端计算节点(例如,服务器)或电器之前,在数据消息的头中插入HH认定。例如,接收到具有HH认定的数据消息的(转发元件600之后的中介网络构造610中的)转发元件或电器可以基于数据消息的HH认定使用公平消息丢弃或优先级排队,以便确保HH数据消息不导致较小流的数据消息过度丢弃。替代地,接收到具有HH认定的数据消息的转发元件或电器可以使用该认定来确保特定HH流得以提供优于其他流的优先级转发。
在一些实施例中,这种转发元件或电器基于数据消息的头中的HH认定执行的一种这样的转发操作是:作为转发元件或电器执行以将HH流拆分为采用去往HH流的目的地的不同路径的较小流的ECMP操作的一部分,选择去往消息的目的地的路径。如今,定义了用于将较大流拆分为采用去往较大流的目的地的不同路径的较小流的许多技术。这些技术中的一些技术从较大流的头产生用于较小流的略微不同的头值(例如,源端口),以便确保中介网络转发元件沿着去往较大流的目的地的不同路径转发较小流。
除了或代替在数据平面中实现HH检测电路之外,一些实施例的网络转发元件还实现流大小(FS)检测电路,其为它处理以用于在网络中转发的一些或所有数据消息生成流大小密度分布。图9示出可以被配置为实现本发明的一些实施例的FS检测电路950的数据平面920的示例。图9的数据平面920与图6的数据平面620相同,除了其可编程级被配置为除了或代替HHD电路650之外还实现FS检测电路950。因此,数据平面920被示为图6的同一转发元件600的一部分,其如上所述在数据消息源设备与目的地设备(例如,设备605与607)之间转发数据消息。
如所示,转发元件600具有:(1)数据平面920,其执行转发元件600的转发操作,以将转发元件接收到的数据消息转发到其他设备;和(2)控制平面625,其将数据平面的可编程级(例如,MAU级632)配置为执行其操作(例如,其转发操作、其FS检测操作、其HHD操作等)。在一些实施例中,数据平面920由在其上定义消息处理管线640/642和业务管理器644的ASIC来实现,而控制平面625由存储控制平面指令的一个或多个存储器和执行控制平面指令的一个或多个通用处理器来实现。
类似于数据平面620,数据平面920具有若干入口管线640和出口管线642,其具有若干数据消息处理级632,数据消息处理级632被配置为处理与数据平面接收到的数据消息关联的数据元组(例如,头矢量),以便转发数据消息。业务管理器644充当交叉开关,其将消息从入口管线引导到出口管线。每个入口或出口管线具有:(1)解析器630,其从管线接收以用于处理的数据消息提取消息头;和(2)逆解析器634,其从消息的最后处理的头矢量(即,管线的最后消息处理级所处理的头矢量)和数据消息的净荷重构数据消息。
在一些实施例中,逆解析器634使用从解析器630接收到的头的一部分以从其关联头矢量重构消息。图9示出出口管线642的逆解析器634与数据平面920的控制/数据平面接口930之间的连接。通过该接口930,控制平面625可以访问数据平面920中的资源(例如,寄存器、存储器等),并且数据平面920可以将数据提供给控制平面,如以下进一步描述的那样。
图9示出在一些实施例中,一些数据平面消息处理级被配置为实现流大小检测电路950。在其他实施例中,数据平面具有专用流大小检测电路,其不将改变用途的消息处理级用于流大小检测操作。在一些实施例中,FS检测电路950收集关于数据平面920处理的数据消息流的统计,并基于收集到的统计,它生成表示流大小范围中的不同流大小子范围中的流的数量的FS密度分布(FSDD)。
如所示,FS检测电路950包括流大小计数器952、流大小寄存器953、流大小最小值选择器954、当前FS分布跟踪器956、当前FSDD寄存器962、先前FS分布跟踪器958、先前FSDD寄存器964和FS分布发布器960。在一些实施例中,流大小计数器952生成关于数据平面920处理的数据消息流的统计值。基于这些统计值,当前FS分布电路956和先前FS分布电路958生成FSDD,并将这些FSDD存储在FSDD寄存器962和964中。这些寄存器962和964中的每一个具有若干单元,每个单元对应于FS值的不同子范围。
这些寄存器中所存储的密度分布是概率密度分布,因为它们基于流大小计数器952为数据平面920处理的数据消息流生成的并存储在FS寄存器953中的概率统计值。在一些实施例中,FS计数器952与图6的统计累计器652相似。如参照图1-图8所描述的那样,统计累计器(例如,FS计数器952)通过以下操作为处理后的数据消息流生成概率统计值:从数据消息流的头值生成哈希值,并在所生成的哈希值识别的存储器位置(例如,FS寄存器953的单元)处累计流大小值。在一些实施例中,关于两个不同数据消息流所生成的哈希可能碰撞,这将导致用于两个流的流大小计数在FS计数寄存器953的同一单元中累计。因此,不期望的哈希碰撞会在所收集的统计中引入误差,这是为什么所收集的流大小计数是可以具有特定等级的不准确性的概率值的原因。
FS检测电路950产生的密度分布是在可编程时间段上定义的FSDD。例如,流大小检测电路950产生表示在第一时间段期间在不同流大小子范围中的处理后的流的数量的第一FSDD,然后产生表示在第二时间段期间在不同流大小子范围中的流数量的第二FSDD。
为了针对特定时间段产生FSDD,FS检测电路使用当前FS分布跟踪器956和先前FS分布跟踪器958。对于每个特定消息流的每个当前处理的消息,当前分布跟踪器956基于FS检测电路950已经在特定时间段中关于特定消息流计算的流大小(包括当前消息的净荷大小),更新当前FSDD寄存器962。另一方面,对于每个当前处理的消息,先前FS分布跟踪器958维护关于先前处理的消息的FSDD。对于在特定时间段期间处理的每个消息,该跟踪器958更新第二FSDD寄存器964,以便在特定时间段期间对于每个处理后的消息流,关于多个消息取消对FSDD寄存器962的冗余更新。
更具体地说,为了对于作为特定数据消息流的一部分的当前消息,针对特定时间段更新第一FSDD寄存器962,第一分布跟踪器956将对应于FS检测电路950当前在特定时间段中对于特定消息流维护的第一流大小的第一FSDD寄存器单元中所存储的值递增1。第一流大小包括当前消息的净荷大小。如上所述,FS计数器952对于它处理的每个当前消息计算多个概率流大小值,并将这些值存储在FS寄存器953的多个单元中。FS计数器将这些多个FS值输出到最小值选择器954,最小值选择器954然后选择并输出它接收的最小FS值作为在处理当前消息之后FS检测电路950当前在特定时间段中对于特定消息流具有的当前概率流大小。
在特定时间段期间,FS检测电路950可能处理特定消息流的多于一个消息。对于这些消息中的每一个,当前分布跟踪器956更新当前FSDD寄存器962中的当前FSDD。除了当随后更新递增与随后FS范围关联的寄存器单元以指示特定数据消息流的流大小已经从一个FS子范围去往另一FS子范围时之外,特定时间段中对于特定消息流的第一次更新之后的每个更新是冗余的。
因此,为了考虑在特定时间段期间关于一个特定数据消息流对当前FSDD寄存器962的多个冗余更新,FS检测电路950使用先前分布跟踪器958。为了关于当前消息更新先前FSDD寄存器,先前分布跟踪器958将对应于通过从最小值FS选择器954关于当前消息输出的流大小减去当前消息的净荷大小而计算出的流大小(即,对应于FS检测电路950在处理当前消息之前对于特定消息流维护的流大小)的先前FSDD寄存器单元中所存储的值递增1。
如以下参照图11-图13进一步描述的那样,用于特定时间段的FSDD是当前FSDD寄存器962的当前FSDD减去先前FSDD寄存器964的先前FSDD。因此,基于当前消息对先前FSDD的更新被设计为:关于特定时间段,从当前FSDD移除特定数据消息流的任何先前消息对当前FSDD的任何先前贡献。
FS分布发布器960在概念上表示将用于特定时间段的FSDD提供给本地控制平面625、远端控制平面或外部服务器的数据平面电路。在不同的实施例中不同地实现该发布器。在一些实施例中,转发元件900的控制平面625通过控制平面接口930获取用于特定时间段的FSDD。结合地或替代地,在一些实施例中,数据平面的消息生成器635生成数据消息,数据平面920处理数据消息,使得FS检测电路950可以然后通过它关于特定时间段已经生成的FSDD来填充。
然后,在一些实施例中,数据平面的出口管线642的逆解析器634可以通过将这些FSDD填充的数据消息引导到将数据消息转发到控制平面接口930的数据平面端口615,将这些消息转发到转发元件的控制平面625。替代地或结合地,出口管线逆解析器634可以将FSDD填充的数据消息引导到对应于与外部机器(例如,外部服务器)关联的转发元件端口612的数据平面出口端口615,使得FSDD填充的数据消息可以通过机器与转发元件端口之间的直接连接或者通过中介网络发送到外部机器。
图9示出一个当前FSDD寄存器962和一个先前FSDD寄存器964。然而,在一些实施例中,FS检测电路950具有多个当前FSDD寄存器(例如,16个寄存器)和多个先前FSDD寄存器(例如,16个寄存器)。该FS检测电路950的当前分布跟踪器956和先前分布跟踪器958使用每对当前/先前FSDD寄存器来对于不同特定时间段存储当前/先前FSDD。在以下的讨论中,这些时间段中的每一个称为时期。在这些实施例中,每个当前或先前FSDD寄存器集操作为循环寄存器集,由此在将计算出的FSDD存储在集合中的最后寄存器中之后,下一个计算出的FSDD被存储在集合中的第一个寄存器中。例如,在一些实施例中,当使用16对寄存器时,分布跟踪器956和958对于16个连续时期(即,时间段)存储多达16对当前/先前FSDD。在将第十六个FSDD存储在其第十六个寄存器中之后,分布跟踪器956或958将下一FSDD存储在第一个寄存器中。
在一些实施例中,FS检测电路950生成并维护用于多个FSDD的记录。在一些实施例中,本地控制平面625通过控制平面接口930获取这些FSDD中的若干FSDD,和/或通过数据平面生成并转发到控制平面接口930的FSDD填充的数据消息接收若干FSDD。类似地,在一些实施例中,一个或多个FSDD填充的数据消息可以在任何给定时间将数据平面维护的若干FSDD发送到外部机器。
图10示出FS检测电路950在一些实施例中执行以处理数据平面920接收的数据消息的过程1000。将参照图11-图13解释该过程1000,图11-图13示出FS检测电路950对于在一个时期中处理的前三个数据消息执行的操作。如所示,FS计数器952初始地从接收到的数据消息的一组头值(例如,L2、L3和/或L4头值)(在1005)生成四个哈希值。在一些实施例中,四个哈希值由四个不同的哈希生成器生成,而在其他实施例中,四个哈希值是一个或两个哈希生成器所生成的一个或两个哈希值的四个部分。
接下来,在1010,FS计数器952使用接收到的消息的净荷大小以递增存储在四个生成的哈希值指定的四个地址所识别的(四个字节计数寄存器中的)四个计数寄存器单元处的字节计数值。图11示出FS计数器952使用20KB的净荷大小来更新用于FS计数器在一时期中处理的第一分组的四个寄存器1102-1108中的四个单元的值的示例。在该示例中,该第一分组是流A的分组1。在一些实施例中,FS计数器952对于不同时期(例如,奇数和偶数时期)使用不同寄存器集(例如,奇数和偶数寄存器集),使得它可以重置先前时期中所使用的一个寄存器集,同时对于当前时期使用(先前重置的)另一寄存器集。这与以上参照图1-图5所描述的方法相似。
在其他实施例中,FS计数器952对于所有时期仅使用一个寄存器集(例如,一组四个寄存器1102-1108)来维护字节计数。鉴于FS计数器对于较晚时期不应当使用较早时期的字节计数,FS计数器维护用于每个寄存器的每个单元的时间戳,以识别它更新单元的最后时间。每次FS计数器952必须以当前消息的净荷大小递增单元的字节计数时,该计数器首先检查用于单元的时间戳。当用于单元的时间戳与较早时期关联(即,不与当前时期关联)时,FS计数器将单元的值设置为当前消息的净荷大小(即,丢弃该位置处所存储的任何非零值)。另一方面,当用于单元的时间戳与当前时期关联时,FS计数器将当前消息的净荷大小与该单元中当前所存储的值相加。
在1015,FS计数器952输出在1010递增的四个单元的四个值。接下来,在1020,FS最小值选择器954选择在1015输出的最小字节计数值。最小字节计数是应当最少被哈希碰撞影响的值,因为不太可能的是,通过对接收到的消息的流标识符(即,接收到的消息的头值集合)进行散列化所识别的所有四个单元原本也被其他消息流的头值的散列化识别。在图11所示的示例中,FS最小值选择器954输出20KB,因为所有四个单元存储20KB。
在1025,当前FS分布跟踪器956将对应于FS最小值选择器954所输出的FS值的当前FSDD寄存器962中的单元递增1。在图11的示例中,该单元是第一单元,因为每个单元对应于50KB增量。因此,图11示出当前FSDD寄存器962的第一单元中所存储的值1。由于流A的分组1是在当前时期中所处理的第一消息,因此该寄存器中的其余值是零。
接下来,在1030,先前FS分布跟踪器956将对应于通过从FS最小值选择器954所输出的FS值减去当前消息的净荷大小而得到的流大小值的先前FSDD寄存器964中的单元递增1。在图11中,由于流大小减去分组大小是零(因为鉴于流A的分组1是在该时期中对于流A处理的第一分组,流大小等于当前消息的分组大小),因此在先前FSDD寄存器964中不递增值。在1030之后,过程结束。
如上所述,当前FSDD寄存器962中所存储的当前FSDD与先前FSDD寄存器964中所存储的先前FSDD之间的差值是FS检测电路950对于当前时期产生的FSDD。为了示出该情况,图12和图13示出在与图11相同的时期中处理接下来的两个分组。图12示出该时期中的第二分组是流B的分组1。该分组具有10KB的净荷大小。
FS计数器从流B的分组1的一组头值生成识别四个寄存器1102-1108中的四个单元的四个哈希值。为该分组所生成的第二哈希值与为流A的分组1所生成的第二哈希值相同,因此识别第二寄存器1104中的相同单元。换言之,用于流A和B的哈希在寻址单元之一(即,第二寄存器1104的单元)中碰撞。
在识别四个单元之后,FS计数器用流B分组1的净荷大小递增这些单元中的字节计数。如所示,第一、第三和第四寄存器中的寻址单元被设置为10KB,因为这些单元先前存储0,而第二寄存器1104中的寻址单元被设置为30KB,因为该单元先前存储20KB。FS计数器输出这四个单元的值,并且最小值选择器挑选10KB作为当前流大小,以用于当前分组(分组1)的流大小。
然后,当前FS分布跟踪器956将对应于最小值选择器所输出的流大小的当前FSDD寄存器962的单元中所存储的值递增1。由于该值是10KB,并且当前FSDD寄存器962的第一单元对应于该值,因此该单元的值从1递增到2。如图11中那样,由于用于流B的流大小减去流B的分组1的分组大小是零(因为鉴于流B的分组1是在该时期中对于流B正处理的第一分组,流大小等于当前消息的分组大小),因此在图12中的先前FSDD寄存器964中不递增值。
图13示出该时期中的第三分组是流A的分组2。该分组具有40KB的净荷大小。FS计数器从该分组的一组头值生成四个哈希值,它们识别与其对于图11中的流A的第一分组所识别的相同的四个单元。再次,在第二寄存器1104中存在流A与B之间的哈希碰撞。
在识别这四个单元之后,FS计数器将这些单元中的字节计数递增达流A的分组2的净荷大小。如所示,第一、第三和第四寄存器中的寻址单元在该操作之后被设置为60KB,而第二寄存器1104中的寻址单元被设置为70KB。FS计数器输出这四个单元的值,并且最小值选择器挑选60KB作为当前流大小,以用于当前分组的流大小。
然后,当前FS分布跟踪器956将对应于最小值选择器所输出的流大小的当前FSDD寄存器962的单元中所存储的值递增1。由于该值是60KB,并且当前FSDD寄存器962的第二单元对应于50-100KB的流大小范围,因此第二单元的值从0递增到1。此外,由于当前流大小是60KB,而当前分组的净荷大小是40KB,因此第二FS分布跟踪器958将对应于20KB(即,当前流大小减去当前分组的净荷大小)的先前FSDD寄存器964的单元中所存储的值递增1。
图13示出当前FSDD寄存器962中所存储的当前FSDD减去先前FSDD寄存器964中所存储的先前FSDD得到总体FSDD 1305,其示出FS检测电路950当前已经关于两个流(一个的流大小在0至50KB的范围中(即,流B),另一个的流大小在50至100KB的范围中(即,流A))收集了两个流大小。该减法用虚线表示,因为可以在数据平面、本地/远端控制平面或远端机器中执行它。在该减法中,从当前FSDD中的(用于对应密度子范围的)对应当前密度值减去先前FSDD中的(用于每个密度子范围的)每个先前密度值。
该减法消除了流A的分组1对当前FSDD寄存器962的第一单元的较早贡献,以便确保相同流不递增FS检测电路对于当前时期所生成的FSDD中的多个不同子范围(即,多个不同FSDD寄存器单元)。换言之,一旦从当前FSDD寄存器的第一单元减去先前FSDD寄存器的第一单元中所存储的值,就消除了流A的分组1对当前FSDD寄存器的第一单元的先前贡献。这种消除是需要的,因为一旦处理流A的分组2,对于该流所维护的流大小就从与当前单元寄存器的第一单元关联的第一子范围传递到与第二单元关联的第二子范围。
图14示出过程1400,其示出通过充当数据平面920的消息处理管线640和642的消息处理级632的图7的MAU电路700在一些实施例中如何实现FS检测电路950。对于数据平面920接收的每个数据消息执行该过程。参照图15解释该过程,图15示出实现FS检测电路950的两个MAU级1505和1510。
过程开始于:MAU级1505接收用于数据平面920正处理的消息的头矢量1502。如所示,MAU级1505的四个哈希生成器1515初始地从接收到的数据消息的一组头值(例如,L2、L3和/或L4头值)(在1405)生成四个哈希值。这些哈希生成器是MAU级1505的匹配单元的一部分。在一些实施例中,该MAU级与图7的MAU 700相似。代替使用四个哈希生成器,其他实施例通过选择一个或两个哈希生成器所生成的一个或两个哈希值的不同部分来生成四个哈希值。
接下来,在1410,第一MAU级的四个有状态ALU 1520使用接收到的消息的净荷大小来递增四个生成的哈希值指定的四个地址所识别的(四个有状态ALU表1525中的)四个有状态ALU单元处所存储的字节计数值。四个有状态ALU单元属于与当前时期关联的四个字节计数寄存器。在一些实施例中,每个有状态ALU中的十六组不同单元用以对于十六个不同时期定义十六个不同寄存器。为了用当前消息的净荷大小递增单元的字节计数,计数器实现的有状态ALU 1520首先检查用于单元的时间戳。当用于单元的时间戳与较早时期关联(即,不与当前时期关联)时,有状态ALU 1520将单元的值设置为当前消息的净荷大小(即,丢弃该位置处所存储的任何非零值)。另一方面,当用于单元的时间戳与当前时期关联时,有状态ALU将当前消息的净荷大小与该单元中当前所存储的值相加。
在1415,有状态ALU 1520将在1410所递增的四个单元的四个字节计数值输出到其MAU 1505的动作ALU 1535,然后,动作ALU 1535(在1415)选择最小字节计数值并(在1415)将该所选择的字节计数存储在用于消息的修改后的头矢量1550中,以用于随后MAU 1510进行处理。在1420,随后MAU 1510的匹配级1530获取该字节计数,使用该字节计数在存储用于字节计数值的不同子范围的当前寄存器单元索引的第一TCAM(三进制内容可寻址存储器)1532中执行第一查找,以及使用该字节计数减去当前消息的净荷大小,以在存储用于字节计数减去当前净荷大小的不同子范围的先前寄存器单元索引的第二TCAM 1532中执行第二查找。美国专利申请15/382,711描述了可以执行范围查找的TCAM,并通过引用并入本文。
对于图11和图12所示的示例,TCAM查找将在第一FSDD寄存器962和第二FSDD寄存器964中返回1和0的索引。这些示例中的字节计数是20和10,同时在这些示例中,字节计数减去净荷大小是0。对于字节计数20和10,当前FSDD TCAM对于当前FSDD寄存器存储索引值1,因为在这些示例中,子范围是50KB增量。即使两个TCAM存储相同子范围,一些实施例也使用两个TCAM,使得对于当前和先前FSDD寄存器可以执行两个同时查找操作。当对于当前和先前FSDD寄存器使用相同子范围时,其他实施例仅使用一个TCAM。
在1425,随后MAU 1510的有状态ALU 1522确定在1420所识别的两个索引是否为相同的。如果是,则由于不需要递增这些索引所识别的当前和先前FSDD寄存器单元(因为当从当前FSDD减去先前FSDD时,递增的值将相互抵消),因此该过程结束。另一方面,当在1420所识别的两个索引不是相同的时,(实现当前FS分布跟踪器956的)一个有状态ALU 1522(在1430)将对于当前时期的当前FSDD寄存器所识别的索引识别的(实现当前FSDD寄存器962的)其有状态ALU表1527中的单元递增1。
接下来,在1435,(实现先前FS分布跟踪器958的)另一有状态ALU 1522将对于当前时期的先前FSDD寄存器所识别的索引识别的(实现先前FSDD寄存器964的)其有状态ALU表1527中的单元递增1。图13通过示出当前FSDD寄存器962的第二单元的值被设置为1并且示出先前FSDD寄存器964的第一单元的值被设置为1来示出操作1430和1435的示例。在这些递增操作之前,这些单元都存储值0。
如上所述,本地控制平面625、远端控制平面或远端机器(例如,远端服务器)对于一个或多个时期(例如,对于16对当前/先前FSDD寄存器中所存储的16个时期)周期性地或根据需要接收或收集当前FSDD寄存器962和先前FSDD寄存器964中所存储的FSDD。从每对FSDD,本地/远端控制平面或远端机器可以通过从该对的当前FSDD减去该对的先前FSDD,计算与该对关联的用于时段的FSDD。在一些实施例中,将(寄存器962和964中所存储的)当前和先前FSDD(例如,在头矢量中)提供给数据平面中的组件(例如,数据平面中的ALU),它们从每个当前FSDD减去其对应的先前FSDD,以生成用于时期的整体FSDD,然后将其提供给本地/远端控制平面或远端机器。
通过控制/数据平面接口930,本地控制平面625可以从寄存器962或964获取FSDD,或者接收包括FSDD的数据平面生成的数据消息。远端控制平面或远端机器也可以通过包括FSDD的数据平面生成的数据消息接收FSDD。如上所述,在一些实施例中,数据平面生成的数据消息是由数据平面的一个或多个消息生成器635生成的。
在一些实施例中,数据平面还可以被配置为在FSDD寄存器之外存储感兴趣FSDD(即,满足阈值准则的FSDD)。例如,为此,消息生成器635生成数据消息,数据消息的头矢量填充有当前和先前FSDD寄存器中所存储的当前和先前FSDD。这些头矢量由实现FS检测电路950的MAU如此进行填充。然后,这些头矢量由随后MAU处理,随后MAU确定它们所包含的FSDD是否满足一个或多个感兴趣准则(例如,识别特定数量的大流)。如果是,则这些随后MAU存储FSDD;否则,丢弃它们。在一些实施例中,随后MAU从每个当前FSDD减去其对应的先前FSDD,以便获得用于时间段的总体FSDD,然后它们对其进行分析,以确定该得到的FSDD是否是感兴趣的。不同实施例使用不同阈值准则来确定FSDD是否是感兴趣的。例如,作为用于表达FSDD是否是感兴趣的一组一个或多个准则,一些实施例对HHD的数量和/或FSDD所指定的流数量进行计数。
代替依赖于消息生成器635生成用于读取FSDD寄存器的数据消息,随着外部接收到的数据消息正在被处理以用于转发和填充FSDD寄存器,其他实施例使实现FSDD寄存器的MAU将它们的FSDD寄存器值写入头矢量中。在这些实施例中,随后MAU然后确定这些头矢量中所包含的FSDD是否满足一个或多个感兴趣准则(例如,识别特定数量的大流)。如果是,则这些随后MAU存储FSDD;否则,丢弃它们。再次,在一些实施例中,随后MAU从每个当前FSDD减去其对应的先前FSDD,以获得用于时间段的总体FSDD,然后它们对其进行分析,以确定该得到的FSDD是否是感兴趣的。
此外,在一些实施例中,实现FSDD寄存器的MAU仅将它们的用于先前完成的时期(例如,时期1)的FSDD寄存器值写入随后时期(例如,时期2)中从转发元件的外部接收的数据消息的头矢量中。这样允许随后MAU对所完成的时期的数据执行它们的分析,而不是对于当前时期重复地执行该分析。
在一些实施例中,接收FSDD的本地/远端控制平面或远端机器分析FSDD以执行网络中的拥塞评估。这种分析将允许网络管理员识别拥塞的网络转发元件以及这些转发元件的消息吞吐量。它还允许管理员识别网络中的聚集和突发行为,并识别网络中的分组/流大小分布。它还允许在亚毫秒时段上执行这些评估。该评估允许网络管理员识别拥塞的源和时间段。评估还允许管理员执行网络和容量规划。
虽然已经参照大量具体细节描述了本发明,但本领域技术人员将认识到,在不脱离本发明的精神的情况下,可以通过其他具体形式体现本发明。例如,虽然已经参考硬件转发元件描述了本发明的若干实施例,但本领域技术人员将认识到,其他实施例实现于(计算机上执行的)软件转发元件、网络接口卡和/或网络电器(例如,中间盒电器)上。此外,一些实施例由并非转发元件,但是用于检测高命中项和/或计算FSDD的专用电器的电器来实现。
此外,可以与上述实施例不同地实现其他实施例(例如,代替将当前分布962和先前分布964递增1,其他实施例用其他常数值递增这些寄存器)。因此,本领域技术人员将理解,本发明不限于前述说明性细节,而是由所附权利要求来限定。

Claims (20)

1.对于网络转发元件,一种用于在网络内转发数据消息的数据平面电路,所述数据平面电路包括:
多个可编程级,用于对与所述数据平面电路接收到的数据消息流关联的数据元组执行数据消息转发操作,以便在所述网络内转发所述数据消息流;和
流大小检测电路,用于生成表示流大小范围中的不同流大小子范围中的流数量的流大小密度分布。
2.如权利要求1所述的数据平面电路,其中,所述密度分布是基于所述流大小检测电路为被处理以用于在所述网络内转发的数据消息流生成的概率统计值的概率密度分布。
3.如权利要求2所述的数据平面电路,其中,所述流大小检测电路通过从所述数据消息流的头值生成哈希值,并在生成的哈希值所识别的存储器位置处累计流大小值,来生成用于所述数据消息流的概率统计值。
4.如权利要求1所述的数据平面电路,其中,所述可编程级包括:
第一组可编程级,被编程为对接收到的数据消息流执行数据消息转发操作;和
第二组可编程级,被编程为实现所述流大小检测电路。
5.如权利要求1所述的数据平面电路,其中,所述密度分布是在可编程时间段上定义的密度分布。
6.如权利要求1所述的数据平面电路,其中,所述密度分布是在第一时间段上定义的第一密度分布,并且所述流大小检测电路生成在第二时间段期间表示所述流大小范围中的不同流大小子范围中的流数量的第二流大小密度分布。
7.如权利要求1所述的数据平面电路,还包括:
发布电路,用于通过所述网络将存储所述流大小密度分布的一组数据消息发送到与所述网络转发元件分离的机器。
8.如权利要求1所述的数据平面电路,其中,
所述网络转发元件包括控制平面电路,用于对所述数据平面电路的可编程级进行编程,并且
所述数据平面电路还包括发布电路,用于将存储所述流大小密度分布的一组数据消息发送到所述控制平面电路。
9.如权利要求1所述的数据平面电路,其中,
所述网络转发元件包括控制平面电路,用于对所述数据平面电路的可编程级进行编程,并且
所述数据平面电路还包括控制平面接口,所述控制平面电路通过所述控制平面接口获取所述流大小密度分布。
10.如权利要求2所述的数据平面电路,其中,所述流大小(FS)密度分布是所述FS检测电路针对特定时间段维护的第一FS密度分布,并且所述FS检测电路包括:
当前消息FS分布跟踪器,用于:针对作为特定消息流的一部分的接收到的消息,基于所述FS检测电路在所述特定时间段中针对所述特定消息流维护的第一流大小更新第一FS密度分布(FSDD)寄存器中所存储的第二FSDD,所述第一流大小包括所述接收到的消息的净荷大小;和
先前消息FS分布跟踪器,用于:在处理所述接收到的消息之前,基于所述FS检测电路针对所述特定消息流维护的第二流大小更新第二FSDD寄存器中所存储的第三FSDD,
其中,所述第一FSDD是通过从所述第二FSDD减去所述第三FSDD计算的,并且
其中,基于接收到的消息对所述第三FSDD的更新旨在从所述第一FSDD消除所述特定数据消息流的任何先前消息对所述第二FSDD的任何先前贡献。
11.一种网络转发元件,包括:
数据平面电路,用于在网络内转发数据消息;和
控制平面电路,用于对所述数据平面电路进行编程;
所述数据平面电路包括:
多个可编程级,用于对与所述数据平面电路接收到的数据消息流关联的数据元组执行数据消息转发操作,以便在所述网络内转发所述数据消息流;和
流大小检测电路,用于生成表示流大小范围中的不同流大小子范围中的流数量的流大小密度分布。
12.如权利要求11所述的网络转发元件,其中,所述密度分布是基于所述流大小检测电路为被处理以用于在所述网络内转发的数据消息流所生成的概率统计值的概率密度分布。
13.如权利要求12所述的网络转发元件,其中,所述流大小检测电路通过从所述数据消息流的头值生成哈希值,并在生成的哈希值所识别的存储器位置处累计流大小值,来生成用于所述数据消息流的概率统计值。
14.如权利要求11所述的网络转发元件,其中,所述可编程级包括:
第一组可编程级,被编程为对接收到的数据消息流执行数据消息转发操作;和
第二组可编程级,被编程为实现所述流大小检测电路。
15.如权利要求11所述的网络转发元件,其中,所述密度分布是在可编程时间段上定义的密度分布。
16.如权利要求11所述的网络转发元件,其中,所述密度分布是在第一时间段上定义的第一密度分布,并且所述流大小检测电路生成在第二时间段期间表示所述流大小范围中的不同流大小子范围中的流数量的第二流大小密度分布。
17.如权利要求11所述的网络转发元件,其中,所述数据平面电路还包括:
发布电路,用于通过所述网络将存储所述流大小密度分布的一组数据消息发送到与所述网络转发元件分离的机器。
18.如权利要求11所述的网络转发元件,其中,所述数据平面电路还包括:
发布电路,用于将存储所述流大小密度分布的一组数据消息发送到所述控制平面电路。
19.如权利要求11所述的网络转发元件,其中,所述数据平面电路还包括控制平面接口,所述控制平面电路通过所述控制平面接口获取所述流大小密度分布。
20.如权利要求12所述的网络转发元件,其中,所述流大小(FS)密度分布是所述FS检测电路针对特定时间段维护的第一FS密度分布,并且所述FS检测电路包括:
当前消息FS分布跟踪器,用于:针对作为特定消息流的一部分的接收到的消息,基于所述FS检测电路在所述特定时间段中针对所述特定消息流维护的第一流大小更新第一FS密度分布(FSDD)寄存器中所存储的第二FSDD,所述第一流大小包括所述接收到的消息的净荷大小;和
先前消息FS分布跟踪器,用于:在处理所述接收到的消息之前,基于所述FS检测电路针对所述特定消息流维护的第二流大小更新第二FSDD寄存器中所存储的第三FSDD,
其中,所述第一FSDD是通过从所述第二FSDD减去所述第三FSDD计算的,并且
其中,基于接收到的消息对所述第三FSDD的更新旨在从所述第一FSDD消除所述特定数据消息流的任何先前消息对所述第二FSDD的任何先前贡献。
CN201980022088.8A 2018-05-21 2019-03-08 具有流大小检测器的转发元件数据平面 Pending CN112119613A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862674596P 2018-05-21 2018-05-21
US62/674,596 2018-05-21
US201862690954P 2018-06-28 2018-06-28
US62/690,954 2018-06-28
US16/051,399 US10686679B2 (en) 2018-05-21 2018-07-31 Forwarding element data plane with flow size detector
US16/051,399 2018-07-31
PCT/US2019/021467 WO2019226216A1 (en) 2018-05-21 2019-03-08 Forwarding element data plane with flow size detector

Publications (1)

Publication Number Publication Date
CN112119613A true CN112119613A (zh) 2020-12-22

Family

ID=68532389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980022088.8A Pending CN112119613A (zh) 2018-05-21 2019-03-08 具有流大小检测器的转发元件数据平面

Country Status (4)

Country Link
US (5) US10686679B2 (zh)
CN (1) CN112119613A (zh)
DE (2) DE112019002585T5 (zh)
WO (2) WO2019226215A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10686679B2 (en) 2018-05-21 2020-06-16 Barefoot Networks, Inc. Forwarding element data plane with flow size detector
US11487722B2 (en) * 2020-02-11 2022-11-01 Adobe Inc. Scalable querying for distributed systems
TWI763261B (zh) * 2021-01-19 2022-05-01 瑞昱半導體股份有限公司 數據流分類裝置
US11784935B2 (en) * 2021-09-14 2023-10-10 Avago Technologies International Sales Pte. Limited Centralized aggregated elephant flow detection and management
US20240039813A1 (en) * 2022-07-27 2024-02-01 Vmware, Inc. Health analytics for easier health monitoring of a network

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7369557B1 (en) * 2004-06-03 2008-05-06 Cisco Technology, Inc. Distribution of flows in a flow-based multi-processor system
US8837493B2 (en) 2010-07-06 2014-09-16 Nicira, Inc. Distributed network control apparatus and method
US20140237118A1 (en) * 2013-02-19 2014-08-21 Broadcom Corporation Application Aware Elephant Flow Management
US10158538B2 (en) * 2013-12-09 2018-12-18 Nicira, Inc. Reporting elephant flows to a network controller
CN104283741B (zh) * 2014-11-04 2019-02-22 盛科网络(苏州)有限公司 精确检测大流老化的方法及装置
US20180011850A1 (en) 2015-03-17 2018-01-11 Hewlett-Packard Development Company, L.P. Temporal-based visualized identification of cohorts of data points produced from weighted distances and density-based grouping
US9912610B2 (en) 2015-09-24 2018-03-06 Barefoot Networks, Inc. Data-plane stateful processing units in packet processing pipelines
US10567300B2 (en) * 2017-11-22 2020-02-18 Cisco Technology, Inc. Layer 3 fair rate congestion control notification
US10686679B2 (en) 2018-05-21 2020-06-16 Barefoot Networks, Inc. Forwarding element data plane with flow size detector

Also Published As

Publication number Publication date
US11102090B2 (en) 2021-08-24
DE112019002591T5 (de) 2021-05-06
US10686679B2 (en) 2020-06-16
US11469973B2 (en) 2022-10-11
WO2019226216A1 (en) 2019-11-28
US20190356592A1 (en) 2019-11-21
DE112019002585T5 (de) 2021-07-01
US20190356563A1 (en) 2019-11-21
WO2019226215A1 (en) 2019-11-28
US20190356593A1 (en) 2019-11-21
US20200344138A1 (en) 2020-10-29
US20210099366A1 (en) 2021-04-01
US10931547B2 (en) 2021-02-23

Similar Documents

Publication Publication Date Title
CN112119613A (zh) 具有流大小检测器的转发元件数据平面
US11381504B2 (en) Identifying congestion in a network
CN109921996B (zh) 一种高性能的OpenFlow虚拟流表查找方法
US20210266219A1 (en) Messaging between remote controller and forwarding element
US6871265B1 (en) Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows
US8018845B2 (en) Sampling rate-limited traffic
US10873534B1 (en) Data plane with flow learning circuit
US20200336436A1 (en) Preventing duplication of packets in a network
US11838318B2 (en) Data plane with connection validation circuits
KR102126592B1 (ko) 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛
US8654643B2 (en) Wide field indexing for packet tracking
US20140298148A1 (en) Trend-analysis scheme for reliably reading data values from memory
US20220311691A1 (en) System and method for scalable and accurate flow rate measurement
US10805206B1 (en) Method for rerouting traffic in software defined networking network and switch thereof
US7843829B1 (en) Detection and recovery from control plane congestion and faults
CN113965492A (zh) 一种数据流统计方法及装置
JP2006303703A (ja) ネットワーク中継装置
US9160688B2 (en) System and method for selective direct memory access
CN114900475B (zh) 一种混合流转发方法、装置、设备及存储介质
US9152494B2 (en) Method and apparatus for data packet integrity checking in a processor
CN111010299B (zh) 记录报文转发流程的方法及装置
Chabchoub et al. Analysis of an algorithm catching elephants on the internet
Chen Designing Compact Data Structures for Network Measurement and Control
CN113595816A (zh) 一种数据流测算方法、设备和存储介质
CN108512718A (zh) 用于更新分组中的错误检测信息的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination