CN112106329A - 流控制可见性 - Google Patents

流控制可见性 Download PDF

Info

Publication number
CN112106329A
CN112106329A CN201980021359.8A CN201980021359A CN112106329A CN 112106329 A CN112106329 A CN 112106329A CN 201980021359 A CN201980021359 A CN 201980021359A CN 112106329 A CN112106329 A CN 112106329A
Authority
CN
China
Prior art keywords
flow control
message
data
metadata
circuit
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
CN201980021359.8A
Other languages
English (en)
Inventor
R·常
A·阿格拉沃
Y·李
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
Priority to CN202310897562.XA priority Critical patent/CN117097669A/zh
Publication of CN112106329A publication Critical patent/CN112106329A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • H04L47/2433Allocation of priorities to traffic types
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for 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/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/28Flow control; Congestion control in relation to timing considerations
    • 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/3018Input queuing
    • 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/3027Output queuing
    • 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/3063Pipelined operation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

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

Abstract

一些实施例提供一种用于数据平面转发电路的业务管理电路的方法。业务管理电路从一组入口管线接收数据消息,并将数据消息提供给一组出口管线。该方法识别流控制事件。该方法经由业务管理电路与数据平面转发电路的消息生成电路之间的总线向消息生成电路提供与流控制事件有关的元数据。

Description

流控制可见性
背景技术
网络转发元件使用优先级流控制作为一种机制,以防止特定数据流使转发元件的容量过载。过载的转发元件可以将流控制消息发送到链路伙伴(另一个转发元件),该消息指示链路伙伴暂停发送特定业务(或一旦拥塞条件已经清除,则恢复发送先前已暂停的特定业务)。类似地,网络转发元件可以从其链路伙伴接收流控制消息,该流控制消息指定转发元件暂停(或恢复)向该链路伙伴发送特定业务。网络内流控制的使用可以表示网络内的业务模式,但不容易追踪。
发明内容
本发明的一些实施例提供了一种数据平面转发电路,其可以配置为追踪流控制事件并将关于流控制事件的信息提供给(本地或远程)监视器。一些实施例的数据平面转发电路包括可配置消息处理级,其配置为执行用于处理数据消息的入口和出口管线,以及业务管理电路,其用作(除其他操作之外)交叉开关以从入口管线接收数据消息并将数据消息提供给正确的出口管线。在一些实施例中,业务管理电路配置为识别流控制事件并向数据平面转发电路的数据消息生成电路提供与这些流控制事件有关的元数据。在一些实施例中,该数据消息生成电路存储元数据并生成包括该元数据的数据消息,以供数据平面转发电路发送到监视系统。
在一些实施例中,数据平面转发电路处理与由数据平面接收的数据消息相关联的数据元组,以便在网络内转发数据消息。在一些实施例中,数据平面是网络转发元件(例如,交换机、路由器等)的一部分,其包括配置数据平面的控制平面电路(“控制平面”)。在一些实施例中,消息处理级、业务管理电路和/或数据消息生成电路可配置为通过控制平面处理数据消息并执行相关操作(例如,监视和报告流控制事件)。在其他实施例中,配置数据平面转发电路的控制平面在数据平面的转发元件之外操作(例如,在远程服务器上操作)。在一些实施例中,本地控制平面由控制软件层实现,该控制软件层由转发元件的一个或多个通用处理器(例如,CPU)执行,而远程控制平面由控制软件层实现,该控制软件层由另一转发单元或远程计算机(例如,服务器)的一个或多个CPU执行。
业务管理电路检测到的流控制事件可以包括在转发元件的链路层端口处接收流控制消息和/或由数据平面转发电路生成流控制消息。当至少部分基于从网络转发元件接收到特定流的数据消息时,网络转发元件的链路伙伴(即,具有与网络转发元件的链路层连接的另一个转发元件)过度拥塞时,链路伙伴将流控制消息发送到网络转发元件的端口,以请求网络转发元件暂停向该端口发送具有特定优先级(对应于引起拥塞的数据流)的数据消息。类似地,如果链路伙伴已清除其拥塞,则它可以发送流控制消息,该流控制消息指示网络转发元件可以继续向链路伙伴发送具有指定优先级的数据消息。这些流控制消息由数据平面转发电路处理,该电路根据请求停止或继续发送这些数据消息。
一些实施例的业务管理电路检测数据平面转发电路何时接收到这些流控制消息,并将关于流控制消息的元数据发送到数据消息生成电路。在一些实施例中,当流控制消息从入口管线传递到业务管理电路时,业务管理电路检测到流控制消息的接收。在其他实施例中,业务管理电路从接收流控制消息的端口接收汇总接收到的流控制消息的信号。
另外,当数据平面转发电路生成流控制消息以发送给链路伙伴时,业务管理电路还发送有关流控制事件的元数据。在一些实施例中,业务管理电路配置为响应于检测到特定队列中的拥塞来生成这些流控制消息(由业务管理电路管理)。在这种情况下,业务管理电路具有生成用于流控制事件的元数据所需的信息。
在一些实施例中,元数据包括:(i)用于流控制事件的时间戳(由业务管理电路的电路生成);(ii)接收/发送指示符(例如,比特),指示事件是流控制消息的接收还是流控制消息的生成和发送;(iii)端口标识符,用于指定接收流控制消息或通过其发送流控制消息的端口;以及(iv)流控制消息的内容(例如,优先级)。
在一些实施例中,业务管理电路可以经由从业务管理电路到数据消息生成电路的总线在每个时钟周期将针对一个流控制事件的元数据发送到数据消息生成电路。如果在一个时钟周期内发生一个以上的流控制事件,则一些实施例的业务管理电路包括存储针对多达特定数量的流控制事件的元数据的队列。如果需要使用队列,则业务管理电路会在每个时钟周期发送针对一个流控制事件的元数据,直到清除队列为止。
如上所述,一些实施例的数据消息生成电路存储从业务管理电路接收的元数据。例如,在一些实施例中,数据消息生成电路包括用于存储元数据的缓冲器。在发生特定情况(例如,缓冲器超过阈值、经过特定时间段等)时,数据消息生成电路会生成数据消息,该数据消息包括(i)一组数据消息报头和(ii)存储在缓冲器中的元数据的至少一部分。在一些实施例中,数据消息报头是预先配置的,并且包括用于监视系统(例如,远程监视服务器)的目的网络地址。在一些实施例中,数据消息生成电路将该生成的数据消息与混合的元数据提供给入口管线之一,使得该数据消息通过数据平面转发电路处理并发送到监视系统。
前述发明内容旨在作为本发明的一些实施例的简要介绍。这并不意味着对本文档中公开的所有发明主题进行介绍或概述。以下的具体实施方式和在该具体实施方式中引用的附图将进一步描述发明内容中描述的实施例以及其他实施例。因此,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式和附图进行全面回顾。此外,要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制,而是由所附权利要求限定,因为要求保护的主题可以在不脱离所要求保护的主题的精神的情况下以其他特定形式体现。
附图说明
本发明的新颖特征在所附权利要求书中提出。然而,出于解释的目的,在以下附图中阐述了本发明的几个实施例。
图1概念性地示出网络转发元件的示例,包括数据平面电路,该数据平面电路可以配置为追踪流控制事件并将有关这些事件的信息提供给监视器。
图2概念性地示出一些实施例的业务管理器。
图3概念性地示出用于将流控制事件元数据存储在队列中的一些实施例的过程。
图4概念性地示出由业务管理器在数据平面电路的每个时钟周期执行以将流控制事件元数据发送到消息生成器的一些实施例的过程。
图5概念性地示出在一些实施例中通过从业务管理器到消息生成器的总线发送的数据。
图6概念性地示出一些实施例的消息生成器。
图7概念性地示出基于从业务管理器接收的流控制事件元数据来生成数据消息的一些实施例的过程。
图8概念性地示出实现本发明一些实施例的电子系统。
具体实施方式
本发明的一些实施例提供了一种数据平面转发电路,其可以配置为追踪流控制事件并将关于流控制事件的信息提供给(本地或远程)监视器。一些实施例的数据平面转发电路包括可配置消息处理级,其配置为执行用于处理数据消息的入口和出口管线,以及业务管理电路,其用作(除其他操作之外)交叉开关以从入口管线接收数据消息并将数据消息提供给正确的出口管线。在一些实施例中,业务管理电路配置为识别流控制事件并向数据平面转发电路的数据消息生成电路提供与这些流控制事件有关的元数据。在一些实施例中,该数据消息生成电路存储元数据并生成包括该元数据的数据消息,以供数据平面转发电路发送到监视系统。
图1概念性地示出网络转发元件100的示例,包括可以配置为追踪流控制事件并将关于这些事件的信息提供给监视器的数据平面电路120。转发元件100在网络内转发数据消息,并且可以是任何类型的转发元件(例如,交换机、路由器、网桥等)。
在图1中,转发元件向至少两个链路伙伴105和110以及从至少两个链路伙伴105和110转发数据消息(虚线箭头具体示出了来自第一链路伙伴105的数据消息通过转发元件100转发到第二链路伙伴110的路径)。链路伙伴105和110在链路层(开放系统互连(OSI)模型中的第2层)连接到转发元件100。这些链路伙伴例如是其他转发元件(即,软件转发元件或其他硬件转发元件)。
转发元件100可以部署为网络边缘处的边缘转发元件,以连接到用作网络内数据消息的源和目的地的计算设备(例如,独立或主机计算机),或部署为非边缘转发元件,以在网络中的其他转发元件之间转发数据消息。
如图所示,转发元件100包括:(i)数据平面转发电路120(“数据平面”),其执行转发元件100的转发操作以将由转发元件接收的数据消息转发到其他设备;以及(ii)配置数据平面电路的控制平面电路125(“控制平面”)。转发元件100还包括物理端口112,其从链路伙伴105和110(以及转发元件100的任何其他链路伙伴)接收数据消息并将数据消息发送到链路伙伴105和110(以及转发元件100的任何其他链路伙伴)。
控制平面125配置数据平面120以处理数据消息并执行相关操作(例如,监视和报告流控制事件)。在一些实施例中,控制平面包括执行指令的一个或多个处理器(例如,具有多个处理核或单元的微处理器)以及存储指令的存储器,该指令用于由处理器执行时执行控制平面操作的过程。这些指令可以由(i)包括控制平面125和数据平面120的网络转发元件的制造商指定,(ii)部署和维护网络转发元件的网络管理员指定,或(iii)在监视网络状况的服务器和/或网络转发元件上执行的一个或多个自动化过程来指定。控制平面处理器或控制平面的另一电路通过接口与数据平面通信(例如,配置数据平面或从数据平面接收统计信息)。
数据平面电路120包括端口115,端口115在数据消息被处理之后接收数据消息以进行处理和发送。在一些实施例中,这些端口115是接收和发送流控制消息的链路层端口。在一些实施例中,数据平面120的一些端口115与转发元件100的物理端口112相关联,而其他端口115与数据平面120的其他组件相关联。数据平面120还包括消息生成器电路(“消息生成器”)135、多个入口管线140、多个出口管线142和业务管理电路(“业务管理器”)144。在一些实施例中,数据平面120在专用集成电路(ASIC)上实现,并且其组件在该集成电路上定义。
消息生成器135在数据平面中产生消息。在一些实施例中,这些消息可以指导数据平面中的电路执行某些操作或将数据存储在消息中,以通过网络导出到控制平面或另一个设备。在一些实施例中,消息生成器135生成数据消息,该数据消息通过入口和/或出口管线140和142进行处理,并通过网络发送到监视转发元件100的设备。例如,在一些实施例中,消息生成器135接收流控制事件元数据并将该元数据打包为通过网络发送到监视设备的数据消息。
入口和出口管线140和142处理通过转发元件接收(并且由消息生成器135生成)的数据消息,以便将这些消息转发到它们在网络中的目的地。业务管理器144用作将消息从入口管线引导到出口管线的交叉开关。另外,如图所示,数据平面电路115包括总线150,总线150将来自业务管理器144的数据(例如,流控制事件元数据)提供给消息生成器135。下面参考图2更详细地描述一些实施例的业务管理器。
每个入口或出口管线包括几个可配置(即,可编程)消息处理级132,其可以配置为执行转发元件100的数据平面转发操作,以处理数据消息并将其转发到它们的目的地。这些消息处理级通过处理与数据平面120接收的数据消息相关联的数据元组(例如,消息报头)来执行这些转发操作,以确定如何转发消息。在一些实施例中,尽管入口和出口管线140和142被描述为单独的管线,但是入口和出口管线140和142实际上同时在数据平面电路115的相同消息处理资源上执行。换言之,在一些实施例中,每个消息处理级132可以在相同的时钟周期中处理一个入口管线数据消息和一个出口管线数据消息。
在一些实施例中,消息处理级132是匹配动作单元(MAU),如该示例中所示。在一些实施例中,MAU包括匹配表,该匹配表存储用于与所处理的数据消息的数据元组(例如,存储在从一个MAU传递到下一个MAU的报头矢量中的消息报头值)进行匹配的多个记录。当数据消息与匹配记录匹配时,MAU随后执行由与所识别的匹配记录相关联的动作记录所指定的动作(例如,由所识别的匹配记录所识别的动作记录)。
在一些实施例中,每个MAU还包括一组状态性的算术逻辑单元(ALU),其基于由报头矢量和/或匹配表指定的参数来执行算术运算。状态性的ALU可以将其运算的结果存储在它们访问的有状态的表中和/或可以将这些结果写入报头矢量中(例如,直接或通过指示其他动作ALU将这些结果写入报头矢量中),供其他MAU级使用以处理数据消息。
除了MAU级132,每个入口或出口管线140或142还包括解析器130和逆解析器134。解析器130从管线接收用于处理的数据消息中提取消息报头值。在一些实施例中,消息报头值存储在报头矢量中,该报头矢量传递到第一MAU级(随后传递到随后的MAU级)。报头矢量由连续的消息处理级132处理,并在某些情况下进行了修改,作为其消息处理操作的一部分。当管线的消息处理级132在报头矢量上进行操作时,管线的解析器130将消息的有效负载传递给逆解析器134。在一些实施例中,解析器将整个消息而不是仅将有效载荷传递给逆解析器134。
当管道完成对数据消息的处理并且必须将消息提供给业务管理器(在入口管线的情况下)或端口115(在出口管线的情况下)时,管线的逆解析器134重建数据消息(包括对消息报头值的任何修改)。在一些实施例中,逆解析器根据从最后的消息处理级132接收到的修改后的消息报头矢量来构造消息报头,并将其与从解析器130接收到的有效载荷(或指定为有效载荷的整个数据包的一部分)进行组合。
图2概念性地示出一些实施例的业务管理器200。如上所述,业务管理器200从入口管线205接收重构的数据包,并将这些数据包提供给适当的出口管线210。一些实施例的业务管理器200包括入口消息分析器215、交换结构和消息复制器220、输出缓冲器和队列225、队列监视器230以及流控制事件生成器235。
在从入口管线205之一接收到数据消息时,入口消息分析器215确定如何处理数据消息。在一些实施例中,入口管线205为业务管理器提供重建的数据消息以及附加的元数据,诸如用于数据消息的出口队列、多播组标识符等。在一些实施例中,入口管线205还可以向业务管理器200提供指令,诸如修改队列信用(其影响队列调度)以及打开或关闭某些队列(有效地执行流控制)。另外,入口管线可以处理来自转发元件的链路伙伴的流控制消息,并将这些流控制消息提供给业务管理器200(使得业务管理器可以暂停或恢复由流控制消息指定的队列)。
在一些实施例中,入口消息分析器215分析入口管线205提供的该元数据和数据消息,以确定业务管理器200将如何处理数据消息。例如,如果元数据包括多播组标识符,则此信息与数据消息一起提供给交换结构和消息复制器220。另外,如果接收到流控制消息,则入口消息分析器215将该信息提供给流控制事件生成器235。
一些实施例的交换结构和消息复制器220处理将数据消息添加到适当的队列225。在一些实施例中,对于单播分组,入口管线识别特定队列,并且交换结构220将消息添加到该队列。在一些实施例中,数据消息实际上被添加到输出缓冲器225,并且对输出缓冲器中存储数据消息的位置的引用也已添加到队列。另外,如果数据消息是多播消息,则交换结构和消息复制器220使用由入口管线确定的多播组标识符来确定向其添加数据消息的多个队列225。在一些实施例中,交换结构和消息复制器220还在输出队列组(例如,对应于等价多路径路由路径或在链路聚合组内的队列)中选择。
如上所述,输出缓冲器和队列225存储数据消息,直到数据消息出队并提供给出口管线210为止。在一些实施例中,调度器基于不同队列中数据消息的优先级以及其他因素,确定每个出口管线210的数据消息出队的顺序(在每个时钟周期内,不超过一个数据消息出队到每个管线)。
在一些实施例中,队列监视器230监视每个输出队列225的统计。这包括队列深度(即,当前存储在队列中的数据消息和/或字节数)以及其他队列统计信息。在一些实施例中,队列监视器230确定某些队列的队列深度何时超过各种阈值,并且将有关队列统计信息的信号发送到入口和/或出口管线。另外,当队列监视器230检测到特定队列已超过阈值拥塞级别(即,队列深度超过特定阈值)时,队列监视器将与该队列有关的消息发送给流控制事件生成器235,使得流控制事件生成器可以(i)生成并发送该队列的流控制消息,并且(ii)存储有关此流控制事件的元数据。
流控制事件生成器235检测流控制事件,将关于这些事件的元数据存储在队列240中,并且经由总线245将该元数据发送到一个或多个消息生成器(即,数据平面电路120的消息生成器135)。如图所示,一些实施例的流控制事件生成器235包括流控制消息生成器250、时间戳生成器255和上述元数据队列240。将参考图3和图4描述流控制事件生成器的操作。
图3概念性地示出用于将流控制事件元数据存储在队列中的一些实施例的过程300。在一些实施例中,流控制事件生成器235的组件执行过程300。如图所示,过程300通过检测流控制事件(305)而开始。这些流控制事件可以包括在转发元件的链路层端口处接收流控制消息和/或由数据平面转发电路生成流控制消息。
当至少部分基于来自转发元件的属于特定数据流的数据消息的接收而导致转发元件的链路伙伴过度拥塞时,链路伙伴将流控制消息发送到网络转发元件的端口,以请求网络转发元件暂停向该端口发送具有特定优先级(例如,对应于引起拥塞的数据流)的数据消息。类似地,如果链路伙伴已清除其拥塞,则它可以发送流控制消息,该流控制消息指示网络转发元件可以继续向链路伙伴发送具有指定优先级的数据消息。这些流控制消息被提供给业务管理器200,业务管理器200根据链路伙伴的请求修改队列调度器以暂停或继续从指定队列发送数据消息。
另外,流控制事件生成器235接收流控制消息,或者至少接收指示流控制消息的内容的元数据。在一些实施例中,流控制消息从入口管线205之一传递到业务管理器(例如,传递到入口消息分析器215,入口分析器215将数据提供给流控制事件生成器235)。在其他实施例中,流控制事件生成器235直接从链路层端口接收汇总接收到的流控制消息的信号,数据平面在该链路层端口处接收到流控制消息。
网络转发元件(即,数据平面)还生成流控制消息以发送给链路伙伴,流控制事件生成器235还将其检测为流控制事件。在一些实施例中,业务管理器200(例如,流控制消息生成器250)配置为响应于检测到特定队列中的拥塞来生成这些流控制消息。
参照图3,过程300为检测的流控制事件生成(310)元数据。在一些实施例中,针对流控制事件生成的元数据包括:(i)用于流控制事件的时间戳(由时间戳生成器255生成);(ii)关于流控制事件是接收到的流控制消息还是发送的流控制消息的识别(例如,单个比特);(iii)端口标识符,其指定接收流控制消息或通过其发送流控制消息的链路层端口;以及(iv)流控制消息的内容(例如,正在暂停或恢复的流优先级或多个北京交通管理局优先级、暂停时间以及任何其他数据)。对于接收的流控制消息,在一些实施例中元数据基于从链路层端口或入口管线接收的消息。对于由转发元件发送的流控制消息,元数据是基于流控制消息生成器250用于生成消息的数据来确定的。
接下来,过程300确定(315)元数据队列是否已满。在一些实施例中,如图2所示,流控制事件生成器包括用于存储流控制事件的FIFO队列。因为可以在同一时钟周期中接收和/或生成多个流控制消息,所以在一些实施例中,在将元数据发送到消息生成器之前,使用队列240存储这些消息的元数据。例如,在不同的实施例中,该队列可以保存八个、十六个等流控制事件的元数据。
如果元数据队列已满(例如,由于近期已经接收和/或发送了大量的流控制消息),则该过程丢弃(320)元数据(即,不存储数据)。然而,如果元数据队列中剩余空间,则过程300将用于检测到的流控制事件的元数据添加(325)到队列中。
在一些实施例中,流控制事件生成器235通过总线245在每个时钟周期将针对一个流控制事件的元数据从元数据队列240发送到消息生成器。图4概念性地示出由业务管理器(例如,由流控制事件生成器)在数据平面电路的每个时钟周期执行以将流控制事件元数据发送到消息生成器的一些实施例的过程400。如图所示,过程400首先确定(405)是否有任何流控制事件的元数据存储在元数据队列中。
如果队列包含用于至少一个流控制事件的元数据,则过程400发送(410)队列中的第一(最早)事件的元数据,其中信号将事件标记为有效。然而,如果队列中没有存储任何元数据,则该过程将信号发送(415)到消息生成器,该信号被指定为无效。换言之,在每个时钟周期,业务管理器都会通过总线将信号发送到消息生成器。然而,如果没有要发送的元数据,则在一些实施例中,将有效性比特设置为0,使得消息生成器不将信号存储为流控制元数据。
图5概念性地示出在一些实施例中通过总线从业务管理器200向消息生成器发送的数据500。如图所示,数据500包括有效性比特、时间戳、发送/接收比特、端口标识符和流控制数据。在一些实施例中,有效性比特是识别信号是否为有效流控制元数据的单个比特。时间戳指示检测到流控制事件的时间(即,转发元件接收到流控制消息或转发元件生成流控制消息的时间)。在一些实施例中,发送/接收比特是单个比特,指示事件代表发送的流控制消息还是接收的流控制消息。端口标识符指定数据平面电路的链路层端口,在该链路层端口上接收流控制消息或通过该链路层端口发送流控制消息。最后,在一些实施例中,流控制事件数据指示流控制消息中包含的数据(例如,受影响的优先级、是暂停还是恢复该优先级以及暂停该优先级的时间长度)。
如上所述,来自业务管理器的元数据发送到数据平面电路的一个或多个消息生成器。一些实施例的消息生成器存储从业务管理电路接收到的元数据(例如,在缓冲器或一组缓冲器中),并且在发生特定情况时,将生成数据消息,包括数据消息报头和存储在缓冲器中的元数据的至少一部分。消息生成器将这些生成的数据消息发送到数据平面的处理管线(例如,入口管线),使得数据消息由数据平面处理并通过网络发送到监视器。
图6概念性地示出一些实施例的消息生成器600。如上所述,业务管理器600生成发送到入口和/或出口管线的数据和/或控制消息。这些消息可以响应于某些信号的接收(例如,发送特定类型的控制消息),响应于某些条件的发生等而生成。如图所示,消息生成器600包括至少一组消息报头模板605、消息聚合器610、一对缓冲器615和620、缓冲器管理器625以及缓冲器存储逻辑630。
消息报头模板605是配置的消息报头(例如,存储在RAM中),其被消息聚合器610用来生成数据和/或控制消息。例如,对于某些类型的消息(例如,双向转发检测心跳消息),整个消息可能存储在消息报头模板中。对于将运行间时数据打包为消息的其他类型的消息,消息聚合器610将此运行时数据与来自模板605的一组消息报头进行组合。例如,为了生成具有流控制事件元数据的数据消息,消息聚合器610从缓冲器615或620之一中检索数据,并将一组消息报头附加到该数据,以将数据消息635引导至监视设备。
一些实施例的缓冲器管理器625管理缓冲器615和620以及缓冲器存储逻辑630。在一些实施例中,缓冲器存储逻辑630经由总线640从业务管理器接收流控制事件元数据,并确定(i)是否将接收到的元数据存储在缓冲器615和620之一中,以及(ii)在哪个缓冲器中存储元数据(如果应该存储)。第一决定(到底是否存储元数据)是通过与来自业务管理器的元数据信号一起发送的有效性比特确定的。如果该比特指示元数据信号是有效数据,则缓冲器存储逻辑630将数据存储在缓冲器615和620之一中。在一些实施例中,使用哪个缓冲器是基于来自缓冲器管理器625的信号。具体地,缓冲器管理器指定缓冲器存储逻辑630将接收到的数据存储到缓冲器615或620之一中,直到消息聚合器610将该缓冲器读入数据消息中为止。此时,缓冲器管理器625为缓冲器存储逻辑630指定将传入的元数据引导到缓冲器615和620中的另一个。应当理解,其他机制或电路结构可以用于缓冲流控制事件元数据并生成数据消息以将该元数据发送到本地或远程监视器。
图7概念性地示出一些实施例的过程700,该过程基于从业务管理器(在不同实施例中,或从其他源)接收的流控制事件元数据来生成数据消息。过程700由消息生成器(例如,消息生成器600或类似电路)执行。在该示例中,该过程使用两个缓冲器来存储流控制事件元数据,但是如所提及的,其他实施例可以仅使用单个存储器。
如图所示,过程700确定(705)将当前活动元数据缓冲器的内容发送到监视器。在一些实施例中,消息生成器600配置为在特定时间段之后(或其中的任何一个首先出现)或基于其他情况,当流控制事件元数据缓冲器达到阈值容量时,发送该流控制事件元数据缓冲器的内容。
基于该确定,该过程将当前非活动缓冲器设置(710)作为新的活动缓冲器。在一些实施例中,缓冲器管理器625向缓冲器存储逻辑630发送不同的信号,使得缓冲器存储逻辑将随后接收到的元数据存储在另一个缓冲器(即,当前为空的缓冲器)中。该过程还读取(715)先前的活动缓冲器(即,已经存储从业务管理器接收的流控制事件元数据的缓冲器)的内容。多个缓冲器的这种使用使得消息生成器(例如,缓冲器管理器625或消息聚合器610)从缓冲器之一读取,而新接收的元数据可以存储在不同的缓冲器中而不会影响读取操作。
接下来,该过程将消息报头添加(720)到从先前的活动缓冲器读取的内容中,以便生成数据消息。在一些实施例中,已为所有包含流控制事件元数据的数据消息预先配置了此消息报头,并由消息生成器将其存储为消息报头模板605。每次读取缓冲器615和620之一的内容时,消息聚合器610将此消息报头添加到那些内容(或如果为一个缓冲器的内容发送了多个数据消息,则添加到内容的子集)以生成数据消息。
然后,该过程将生成的数据消息发送(在725)到数据平面的管线。然后该过程结束。在一些实施例中,消息生成器总是将数据消息发送到入口管线(就像在数据平面的端口处接收到数据消息一样),而其他实施例将一些生成的数据消息发送到业务管理器以直接传递到出口管线。这些数据消息由数据平面处理,并且在一些实施例中,由网络转发元件通过中间网络发送到目的地监视设备。在其他实施例中,数据消息被发送到本地监视器(例如,在数据平面电路或运行控制平面的处理器上)。
图8概念性地示出利用其实现本发明的一些实施例的电子系统800。电子系统800可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、PDA或任何其他种类的电子设备。这种电子系统包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统800包括总线805、处理单元810、系统存储器825、只读存储器830、永久存储设备835、输入设备840和输出设备845。
总线805共同表示通信地连接电子系统800的众多内部设备的所有系统、外围以及芯片组总线。例如,总线805将处理单元810与只读存储器830、系统存储器825和永久存储设备835通信地连接。从这些各种内存单元,处理单元810检索要执行的指令以及要处理的数据,以执行本发明的过程。在不同的实施例中,一个或多个处理单元可以是单个处理器或多核处理器。
只读存储器(ROM)830存储处理单元810和电子系统的其他模块所需的静态数据和指令。另一方面,永久存储设备835是读写存储设备。该设备是即使电子系统800处于关闭状态,也可以存储指令和数据的非易失性存储单元。本发明的一些实施例使用大容量存储设备(例如,磁盘或光盘及其相应的磁盘驱动器)作为永久存储设备835。
其他实施例使用可移动存储设备(例如,软盘、闪存驱动器等)作为永久存储设备。与永久存储设备835类似,系统存储器825是读写存储设备。然而,与存储设备835不同,系统存储器是易失性读写存储器,例如,随机存取存储器。系统存储器存储处理器在运行时所需的一些指令和数据。在一些实施例中,本发明的过程被存储在系统存储器825、永久存储设备835和/或只读存储器830中。通过这些各个存储单元,处理单元810检索要执行的指令和要处理的数据,以便执行一些实施例的过程。
总线805还连接到输入和输出设备840和845。输入设备使用户能够向电子系统传达信息并选择去往电子系统的命令。输入设备840包括字母数字键盘和指示设备(也称为“光标控制设备”)。输出设备845显示由电子系统生成的图像。输出设备包括打印机和显示设备,例如阴极射线管(CRT)或液晶显示器(LCD)。一些实施例包括诸如触摸屏等的用作输入设备和输出设备二者的设备。
最终,如图8所示,总线805还通过网络适配器(未显示)将电子系统800耦合到网络865。通过这种方式,计算机可以是计算机网络(例如局域网(“LAN”)、广域网(“WAN”)或内联网或网络的网络(例如,互联网)的一部分。电子系统800的任何或所有组件可以与本发明结合使用。
一些实施例包括电子组件,例如,微处理器、存储设备和在机器可读介质或计算机可读介质(可替代地称作计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令的存储器。这种计算机可读介质的一些示例包括RAM、ROM、只读压缩光盘(CD-ROM)、可记录压缩光盘(CD-R)、可重写压缩光盘(CD-RW)、只读数字多功能光盘(例如,DVD-ROM、双层DVD-ROM),各种可记录/可写入DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存(例如,SD卡、迷你SD卡、微型SD卡等)、磁性和/或固态硬盘驱动器、只读和可记录的
Figure BDA0002696112450000151
光盘、超密度光盘、任何其他光学或磁性介质以及软盘。该计算机可读介质可以存储计算机程序,该计算机程序可以由至少一个处理单元执行并且包括用于执行各种操作的指令集。计算机程序或计算机代码的示例包括例如由编译器产生的机器代码以及包括计算机、电子组件或使用解释器的微处理器执行的高级代码的文件。
尽管以上讨论主要涉及执行软件的微处理器或多核处理器,但是一些实施例是由一个或多个集成电路(例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA))来执行。在一些实施例中,这些集成电路执行存储在电路本身上的指令。
如本说明书中所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”均是指电子或其他技术设备。这些术语不包括一个人或人群。为了说明的目的,术语显示或进行显示意味着在电子设备上进行显示。如本说明书中所使用的,术语“计算机可读介质”、“计算机可读介质”和“机器可读介质”完全限于以计算机可读形式存储信息的有形物理对象。这些术语不包括任何无线信号、有线下载信号和任何其他瞬时信号。
尽管已经参考许多具体细节描述了本发明,但是本领域普通技术人员将认识到,可以在不脱离本发明的精神的情况下以其他具体形式来实施本发明。另外,多个附图(包括图3、图4和图7)概念性地示出了这些过程。可以不用所示出和所描述的精确顺序来执行这些过程的具体操作。可以不用一个连续的操作序列来执行具体操作,并且可以在不同的实施例中执行不同的特定操作。此外,可以使用多个子过程或者较大的宏过程的一部分来执行该过程。因此,本领域普通技术人员将理解的是,本发明不受前述示例性的细节的限制,而是将由所附权利要求进行限定。

Claims (21)

1.一种方法,包括:
在网络转发集成电路(IC)的业务管理电路识别流控制事件,其中,所述业务管理电路从一组入口管线接收数据消息,并将所述数据消息提供给一组出口管线;以及
经由所述业务管理电路与所述网络转发IC的消息生成电路之间的总线向所述消息生成电路提供与所述流控制事件有关的元数据。
2.根据权利要求1所述的方法,其中,所述消息生成电路将所述元数据存储在具有用于多个流控制事件的元数据的缓冲器中。
3.根据权利要求2所述的方法,其中,所述消息生成电路生成数据消息并将生成的数据消息提供给所述入口管线之一,所述数据消息包括(i)存储在所述缓冲器中的元数据以及(ii)一组数据消息报头。
4.根据权利要求3所述的方法,其中,生成的数据消息定址于分析所述流控制元数据的远程服务器。
5.根据权利要求1所述的方法,其中,所述流控制事件包括:从单独的转发元件接收流控制消息,所述流控制消息指示所述网络转发IC停止或继续向所述单独的转发元件发送具有特定特征集的数据消息。
6.根据权利要求5所述的方法,其中,在所述网络转发IC的特定端口接收所述消息,并且所述特定特征集包括优先级值。
7.根据权利要求1所述的方法,其中,所述流控制事件包括:由所述业务管理电路生成流控制消息,以指示单独的转发元件停止或继续向所述网络转发IC发送具有特定特征集的数据消息。
8.根据权利要求1所述的方法,其中,所述特定特征集包括优先级值。
9.根据权利要求1所述的方法,其中,经由所述总线提供所述元数据包括在所述总线上发送信号,所述信号指定(i)所述流控制事件的时间戳;(ii)所述流控制事件是包括流控制消息的接收还是包括流控制消息的生成;(iii)端口标识符;(iv)优先级值。
10.根据权利要求9所述的方法,其中,所述业务管理电路在所述网络转发IC的每个时钟周期发送针对一个流控制事件的元数据。
11.根据权利要求10所述的方法,其中,所述业务管理电路包括用于在将所述元数据发送到分组生成电路之前存储与所述流控制事件有关的元数据的队列。
12.一种用于在网络内转发数据消息的网络转发元件的数据平面电路,所述数据平面电路包括:
一组入口管线;
一组出口管线;
消息生成电路;并且
业务管理电路,用于从所述入口管线接收数据消息,并将所述数据消息提供给所述出口管线,其中所述业务管理电路(i)识别流控制事件,以及(ii)经由所述业务管理电路与所述消息生成电路之间的总线向所述消息生成电路提供与所述流控制事件有关的元数据。
13.根据权利要求12所述的数据平面电路,其中,所述消息生成电路将元数据存储在具有用于多个流控制事件的元数据的缓冲器中。
14.根据权利要求13所述的数据平面电路,其中,所述消息生成电路生成数据消息并将生成的数据消息提供给所述入口管线之一,所述数据消息包括(i)存储在所述缓冲器中的元数据以及(ii)一组数据消息报头。
15.根据权利要求14所述的数据平面电路,其中,生成的数据消息定址于分析所述流控制元数据的远程服务器。
16.根据权利要求12所述的数据平面电路,其中,所述流控制事件包括:从单独的转发元件接收流控制消息,所述流控制消息指示所述数据平面电路停止或继续向所述单独的转发元件发送具有特定特征集的数据消息。
17.根据权利要求16所述的数据平面电路,其中,在所述网络转发IC的特定端口接收所述消息,并且所述特定特征集包括优先级值。
18.根据权利要求12所述的数据平面电路,其中,所述流控制事件包括:由所述业务管理电路生成流控制消息,以指示单独的转发元件停止或继续向所述数据平面电路发送具有特定特征集的数据消息。
19.根据权利要求12所述的数据平面电路,其中,所述业务管理电路通过在所述总线上发送信号向所述消息生成电路提供所述元数据,所述信号指定(i)所述流控制事件的时间戳;(ii)所述流控制事件是包括流控制消息的接收还是包括流控制消息的生成;(iii)端口标识符;(iv)优先级值。
20.根据权利要求19所述的数据平面电路,其中,所述业务管理电路在所述网络转发IC的每个时钟周期发送针对一个流控制事件的元数据。
21.根据权利要求20所述的数据平面电路,其中,所述业务管理电路包括用于在将所述元数据发送到分组生成电路之前存储与流控制事件有关的元数据的队列。
CN201980021359.8A 2018-07-31 2019-03-08 流控制可见性 Pending CN112106329A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310897562.XA CN117097669A (zh) 2018-07-31 2019-03-08 流控制可见性

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862712927P 2018-07-31 2018-07-31
US62/712,927 2018-07-31
US16/108,661 US10873532B2 (en) 2018-07-31 2018-08-22 Flow control visibility
US16/108,661 2018-08-22
PCT/US2019/021459 WO2020027878A1 (en) 2018-07-31 2019-03-08 Flow control visibility

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310897562.XA Division CN117097669A (zh) 2018-07-31 2019-03-08 流控制可见性

Publications (1)

Publication Number Publication Date
CN112106329A true CN112106329A (zh) 2020-12-18

Family

ID=69229372

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310897562.XA Pending CN117097669A (zh) 2018-07-31 2019-03-08 流控制可见性
CN201980021359.8A Pending CN112106329A (zh) 2018-07-31 2019-03-08 流控制可见性

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310897562.XA Pending CN117097669A (zh) 2018-07-31 2019-03-08 流控制可见性

Country Status (4)

Country Link
US (1) US10873532B2 (zh)
CN (2) CN117097669A (zh)
DE (1) DE112019003854T5 (zh)
WO (1) WO2020027878A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11206568B2 (en) * 2019-09-19 2021-12-21 Realtek Semiconductor Corporation Router and routing method
US11611513B2 (en) * 2020-07-17 2023-03-21 Larsen And Toubro Infotech Limited System and method for discovering interfaces in a network
CN112039720B (zh) * 2020-07-31 2022-03-25 中国人民解放军战略支援部队信息工程大学 1~100%流量精确可控流量发生装置及流量生成方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7542425B2 (en) 2003-05-21 2009-06-02 Agere Systems Inc. Traffic management using in-band flow control and multiple-rate traffic shaping
US8887048B2 (en) 2007-08-23 2014-11-11 Sony Computer Entertainment Inc. Media data presented with time-based metadata
US7860009B2 (en) * 2008-06-26 2010-12-28 Alcatel Lucent Providing backpressure flow control to specific traffic flows
US8644139B2 (en) 2010-04-26 2014-02-04 International Business Machines Corporation Priority based flow control within a virtual distributed bridge environment
US9391903B2 (en) 2013-07-15 2016-07-12 Calix, Inc. Methods and apparatuses for distributed packet flow control
US20170083319A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Generation and use of block branch metadata
US10069918B2 (en) * 2015-11-11 2018-09-04 Ut-Battelle, Llc Global communication and control
US9961022B1 (en) 2015-12-28 2018-05-01 Amazon Technologies, Inc. Burst absorption for processing network packets
WO2017199209A2 (en) 2016-05-18 2017-11-23 Marvell Israel (M.I.S.L) Ltd. Traffic management in a network switching system with remote physical ports

Also Published As

Publication number Publication date
US20200044976A1 (en) 2020-02-06
CN117097669A (zh) 2023-11-21
DE112019003854T5 (de) 2021-05-12
WO2020027878A1 (en) 2020-02-06
US10873532B2 (en) 2020-12-22

Similar Documents

Publication Publication Date Title
US11811669B2 (en) Inspecting operations of a machine to detect elephant flows
US11321213B2 (en) Correlation key used to correlate flow and con text data
US11196654B2 (en) System for aggregating statistics associated with interfaces
US11693688B2 (en) Recommendation generation based on selection of selectable elements of visual representation
US11436075B2 (en) Offloading anomaly detection from server to host
US11743135B2 (en) Presenting data regarding grouped flows
US10574576B1 (en) Latency tracking
US11076026B1 (en) Packet generation in the data plane of a forwarding element
US11140090B2 (en) Analyzing flow group attributes using configuration tags
US11201808B2 (en) Tracing logical network packets through physical network
US10491502B2 (en) Software tap for traffic monitoring in virtualized environment
US20190182149A1 (en) Generation of Path Failure Message at Forwarding Element
US11924080B2 (en) Practical overlay network latency measurement in datacenter
US9647915B2 (en) Detailed end-to-end latency tracking of messages
CN112106329A (zh) 流控制可见性
US11665094B2 (en) Collecting, processing, and distributing telemetry data
US11240163B2 (en) Practical overlay network latency measurement in datacenter
US20230350736A1 (en) Distributed flow correlation
US20230179572A1 (en) Automated security policy modification
US20230179571A1 (en) Reuse of groups in security policy

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