一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于诊断数据的直接存储器访问(DMA)引擎的制作方法

2022-07-16 03:24:16 来源:中国专利 TAG:

用于诊断数据的直接存储器访问(dma)引擎
技术领域
1.本发明总体上涉及计算机网络,尤其是网络连接设备的远程诊断。


背景技术:

2.由于以高速传输的大量数据和复杂的转发方案,网络,尤其是网络连接设备(例如,网络接口卡、主机接口适配器、交换机和路由器)的监控和诊断呈现重大挑战。在2018年4月9日至11日举行的第15届usenix网络系统设计与实现研讨会(nsdi'18)的“distributed network monitoring and debugging with switchpointer”中,作者描述了一种利用终端主机资源和可编程性收集和监控遥测数据的网络监控和调试系统,其通过将交换机存储器用作监控功能的“目录服务”来提供网络可见性。


技术实现要素:

3.在此描述的本发明的实施方式提供了一种网络连接设备,包括至少一个通信端口、分组处理电路和诊断直接存储器访问(dma)电路(ddc)。至少一个通信端口被配置为通过网络传送分组。分组处理电路被配置为接收、缓冲、处理和传输分组。ddc被配置为接收(i)一个或多个诊断事件,以及(ii)对于每个诊断事件,在所述分组处理电路中生成的并且与所述诊断事件有关的相应的诊断数据列表的定义,以及响应于诊断事件的发生,从所述分组处理电路收集所述相应的诊断数据列表。
4.在一些实施方式中,所述ddc被配置为响应于多个诊断事件的发生,在至少部分彼此重叠的相应时间段内从所述分组处理电路收集多个相应的诊断数据列表。
5.在一些实施方式中,ddc包括多个ddc实例,所述多个ddc实例被配置为收集用于构建所述列表的所述诊断数据。在一个实施方式中,所述ddc实例中的至少两个被配置为从所述分组处理电路的相应不同部分收集所述诊断数据。附加地或替代地,所述ddc实例中的至少两个可以被配置为收集与相同诊断事件有关的所述诊断数据。
6.在公开的实施方式中,所述分组处理电路包括具有多个流水线级的分组处理流水线,并且所述ddc被配置为从所述流水线级中的两个或更多个收集所述诊断数据。在示例实施方式中,所述ddc被配置为通过读取所述分组处理电路中的一个或多个计数器值来收集所述诊断数据。
7.在另一实施方式中,所述ddc被配置为接收诊断触发器并响应于所述诊断触发器从所述分组处理电路收集所述相应的诊断数据列表。
8.在一些实施方式中,所述ddc被配置为将收集到的列表发送到指定目的地。在一个实施方式中,网络连接设备还包括存储器,指定目的地包括存储器中的存储位置。在另一实施方式中,所述指定目的地包括网络连接设备的处理器,或托管所述网络连接设备的主机。在又一实施方式中,所述指定目的地包括耦合到所述网络的另一网络连接设备的地址。在公开的实施方式中,所述分组处理电路包括用于对出口分组进行排队的出口队列,并且所述ddc被配置为将所述诊断数据列表发送到所述出口队列。
9.根据本发明的实施方式,另外提供了一种方法,包括在网络连接设备中,使用分组处理电路通过网络接收、缓冲、处理和传输分组。在所述网络连接设备中使用诊断直接存储器访问(dma)电路(ddc),接收(i)一个或多个诊断事件,以及(ii)对于每个诊断事件,在所述分组处理电路中生成的并且与所述诊断事件有关的相应的诊断数据列表的定义。响应于诊断事件的发生,使用ddc从所述分组处理电路收集所述相应的诊断数据列表。
10.根据本发明的实施方式,另外提供了一种方法,包括在网络设备中,使用分组处理电路通过网络接收、处理和传输分组。在所述网络设备中操作诊断电路,以便接收(i)预期在所述网络设备中发生的诊断事件,以及(ii)对于每个诊断事件,要从所述分组处理电路收集用于分析的相应的诊断数据列表的定义,以及在发生诊断事件时,根据所述定义收集与所述诊断事件对应的所述诊断数据列表。
11.本发明将通过以下对其实施方式的详细描述并结合附图而得到更充分的理解,其中:
附图说明
12.图1是示意性地示出了根据本发明的实施方式的计算机网络的框图;
13.图2是示意性地示出了根据本发明的实施方式的网络连接设备(ncd)的框图;
14.图3是示意性地示出了根据本发明的实施方式的用于从ncd有效收集诊断数据的方法的流程图;
15.图4是示意性地示出了根据本发明的实施方式的ncd中的诊断事件信令电路的框图;
16.图5是示意性地示出了根据本发明的实施方式的用于在ncd中传输诊断数据的直接存储器访问(dma)方案的框图;以及
17.图6是示意性地示出了根据本发明的实施方式的从ncd输出诊断数据的诊断数据输出电路的框图。
具体实施方式
18.可以监控传统计算机网络的慢速或故障组件、故障链接以及错误或次优转发决策。大规模网络的监控和调试是具有挑战性的问题,例如,由于网络性能受到众多网络元素实时决策的影响,包括路由路径、分组丢失、缓冲区大小、各种拥塞缓解参数等。
19.网络连接设备(ncd),例如路由器、交换机、网络接口控制器(nic)和主机通道适配器(hca),例如在诸如fat-tree、dragonfly等网络结构中,可能包括聚合和积累与设备的转发决策相关的信息;此类信息可能对网络调试、网络性能调整(和其他应用;例如,网络行为的机器学习)有用。该信息通常包括缓存命中率、分组丢失率、缓冲区占用率、路由决策、安全事件等。为了诊断ncd的故障或性能下降,可能需要输出部分累积数据以供分析。然而,对于具有丰富特征集的高性能ncd,此任务可能很复杂,其中累积的数据跨越ncd的各种电路。
20.在此描述的本发明的实施方式提供用于高效收集和输出调试相关信息的方法和系统。在实施方式中,ncd包括一个或多个诊断直接存储器访问电路(ddc)。ddc被配置为从处理器(本地或远程)接收诊断事件的定义和相应的诊断数据,如果发生诊断事件,则应监控这些相应的诊断数据。在实施方式中,ddc然后对ncd内的各种诊断事件源(例如,入口端
口处理电路、出口端口处理电路、共享缓冲区、转发表和排队系统)进行编程以检测诊断事件的发生并用信号发出。在一些实施方式中,诊断事件也可以是软件触发的(例如,用户可以发出ddc解释为检测到诊断事件的命令)。
21.当ddc接收到诊断事件已被任何诊断事件源检测到的指示时,ddc可以将相应的诊断数据dma传输到诊断数据缓冲区。在一些实施方式中,ncd被配置为通过网络发送诊断数据缓冲区的内容,以供远程诊断站分析;在其他实施方式中,本地分析诊断数据。需要注意的是,分析诊断事件所需的诊断数据不限于诊断事件源;相反,可能需要来自ncd的各个子单元的诊断数据。
22.更多细节将参考示例实施方式在下文的系统描述中公开。
23.系统描述
24.图1是示意性地示出了根据本发明的实施方式的计算机网络100的框图。计算机网络100包括网络连接设备(ncd)102,其通过通信网络104与对等网络连接设备进行通信。ncd 102可以包括例如交换机、路由器、诸如网络接口控制器(nic)或主机通道适配器(hca)的网络适配器、支持网络的图形处理单元(gpu)或任何其他合适类型的网络设备。
25.ncd 102包括分组处理电路106,其被配置为接收、缓冲、处理和传输分组,并且可以包括多个缓冲区、队列、路由表、拥塞缓解电路、转发电路和其他电路。在实施方式中,计算机网络100还包括耦合到通信网络104的远程诊断站110,并且可以用于远程诊断ncd102。附加地或备选地,本地诊断站112可以例如通过串行链路耦合到ncd 102,并且ddc可以被配置为通过串行链路发送监控的数据。
26.为了便于在线监测和诊断,ncd 102包括诊断直接存储器访问电路(ddc)108,其被配置为检测诊断事件,并且响应于检测,将诊断数据发送到诊断站。ddc接收诊断事件的定义—例如,预定义的转发决定、分组丢失、缓冲区溢出或不太严重的事件(如缓存未命中)。对于每个定义的诊断事件,ddc进一步接收要监控的相应数据的定义;例如,对于分组丢失事件,相应的监控数据可以包括缓冲区占用率和累积缓存命中率。当预定义的诊断事件发生时,ddc累积相应的监控数据,然后将监控数据发送到ddc接收的预定义目的地(例如,发送到远程诊断站110)。
27.因此,根据图1所示的示例实施方式,ddc接收检测到的诊断事件的指示,收集与事件对应的监测数据,并将监测到的数据发送到预定义的诊断站,该诊断站可以是本地的或远程的。
28.图2是示意性地示出了根据本发明的实施方式的网络连接设备(ncd)102的框图。ncd 102包括入口端口和处理单元200,其被配置为接收和处理入口分组;共享全局缓冲区202,其被配置为临时存储入口分组;转发表204,其被配置为定义入口分组的目的地;排队系统208,其被配置为对出口分组进行排队;以及,出口端口和处理单元202,其被配置为修改和输出出口分组。
29.每个入口端口和处理电路200包括入口端口210,其被配置为从网络104(图1)接收分组,缓冲区212,其被配置为缓冲入口分组,以及控制平面214,其被配置为控制入口端口和处理的操作。每个出口端口和处理电路202包括分组修改器216,其被配置为修改出口分组(通常添加报头),出口端口218,其被配置为通过网络104发送分组,以及控制平面220,其被配置为控制出口端口和处理电路的操作。
30.当ncd 102通过网络104传送分组时,可能发生各种事件,例如分组丢失、分组的安全阻塞、拥塞通知分组的发送等;并且可能需要检测和/或监控一些或所有此类事件的发生。事件可以起源于电路200、202、204、206或208中的任一个(其在下文中将被称为“诊断事件源”)。当发生诊断事件时,可能需要监控某些诊断数据。例如,当分组被丢弃时,可能需要检查相应传输队列的状态(在实施方式中,传输队列的状态被持续监控并存储在本地存储器中;并且,在检测到分组丢弃时,存储的监测数据应被发送进行检查)。
31.为了便于诊断,ncd 102还包括诊断dma电路(ddc)222和cpu 226。ddc被配置为从cpu 226接收诊断事件和相应的诊断数据的定义(在一些实施方式中,ddc可以从远程处理器接收诊断事件定义)。然后,ddc对相应的诊断事件源进行编程以检测诊断事件并向ddc发出检测信号。当ddc从任一诊断事件源接收到诊断事件检测信号时,ddc收集相应的诊断数据,并将数据dma传输到缓冲区(未示出;下面将参考图4进行讨论)。
32.在一些实施方式中,ncd 102包括多个ddc电路,并且,如果同时检测到多个诊断事件或彼此在时间上非常接近,则诊断事件可以分配给不同的ddc电路,这些ddc电路将同时dma传输相应的诊断数据。在实施方式中,可以以部分或完全重叠的时间间隔收集来自多个来源的诊断数据。在一些实施方式中,两个或更多个ddc实例可以被配置为检测相同的诊断事件(并且通常收集不同的数据)。在一些实施方式中,分组处理电路包括流水线,并且ddc被配置为从多个流水线级收集诊断数据。
33.ncd然后可以将ddc收集的诊断数据发送到远程诊断站,该远程诊断站可以耦合到网络或耦合到ncd 102。在实施方式中,ncd仅在缓冲区中收集到数据已完成时才发送诊断数据;在第二实施方式中,在数据收集仍在进行中时,ncd发送诊断数据;在第三实施方式中,ncd可以被配置为在收集完成时发送数据,或者在收集进行时发送数据;并且,在第四实施方式中,ncd被配置为当数据收集完成时从第一组诊断数据源发送诊断数据,并且在收集仍在进行时从第二组诊断数据源发送诊断数据。
34.可以理解,图2所示和上文描述的ncd 102的结构是作为示例引用的示例实施方式。在替代实施方式中可以使用其他电路。例如,在一些实施方式中,ncd包括发起(而不是中继)通信分组(例如,由cpu 226生成)的电路。在一些实施方式中,使用入口/出口双向端口。cpu 226可以包括一个或多个通用可编程处理器,其以软件编程以执行本文所述的功能。软件可以通过例如网络以电子形式下载到处理器,或者它可以替代地或附加地提供和/或存储在非暂时性有形介质上,例如磁、光或电子存储器。
35.图3是流程图300,其示意性地示出了根据本发明的实施方式的用于从ncd高效采集诊断数据的方法。该流程图由ddc 222(图2)执行。
36.该流程图开始于获取列表步骤302,其中ddc获取诊断事件和相应诊断数据的列表(以下称为“dedd-列表”)。dedd列表可由cpu 116(图2)提供,其通常响应于cpu例如从诊断站110或112接收的调试请求生成列表。
37.接下来,ddc进入编程诊断源步骤304,并对一个或多个诊断源进行编程以指示检测到相应的诊断事件(例如,可以对传输队列进行编程以发出队列溢出事件的信号),然后进入检查诊断事件步骤306,其中ddc循环直到检测到诊断事件并由一个(或多个)诊断事件源发出信号。
38.当诊断事件由一个或多个诊断源发出信号时,ddc进入dma传输步骤308,查阅dedd
列表(在步骤302中定义)并将与诊断事件相对应的诊断数据dma传输到诊断数据缓冲区。ddc然后重新进入步骤306,以等待下一个诊断事件。
39.应当理解,图3中所示和上文描述的流程图300是通过示例方式引用的概念流程图,仅仅是为了概念清楚。在本发明的替代实施方式中可以使用替代流程图。例如,在实施方式中,ddc可以在等待诊断事件时(例如,在步骤306上循环)或在ddc处于任何其他步骤时接收对dedd列表的更新。ddc可以响应于例如来自cpu 226的指令刷新dedd列表或其部分。(将参考下面图6所示的示例实施方式来描述从ncd输出诊断数据的机制。)
40.诊断事件列表
41.以下是诊断事件和诊断数据的示例的非限制性列表。在一些实施方式中,可能不使用下文的一些诊断事件;在其他实施方式中,可以使用额外的诊断事件。
42.入口端口和处理事件:
43.1.缓冲事件(例如,队列已满、队列为空)。
44.2.镜像事件(例如,生成镜像分组)。
45.3.转发事件(例如,转发决定)。
46.4.监管事件(例如,当超过最大速率时的丢弃事件,丢弃预定义类型的分组,或者当达到预定义队列的最小或最大速率时)。
47.5.整形事件(例如,未满足为队列设置的最大或最小带宽)。
48.6.wred事件(例如,随机分组丢失事件)。
49.全局共享缓冲区事件:
50.1.队列占用率(例如,占用率超过预设阈值)。
51.2.缓冲区直方图
52.3.尾部丢弃计数器(例如,尾部丢弃算法丢弃的分组数量)
53.4.拥塞计数器(例如,计数拥塞事件的计数器)
54.5.池占用率(例如,缓冲区池的占用率)
55.转发表事件:
56.1.缓存计数器(例如,缓存命中/未命中计数器)
57.2.转发动作
58.3.acl(动作列表)计数器
59.4.流计数器(例如,对具有预定义报头字段值的分组进行计数)。
60.排队系统事件
61.1.aqm(主动队列管理)事件
62.2.etf(增强传输选择)
63.3.整形事件(例如,根据服务等级设置最大带宽)
64.出口端口和处理事件
65.1.端口直方图
66.2.延迟直方图
67.3.各种端口计数器
68.图4是根据本发明的实施方式示意性地示出ncd 102中的诊断事件信令电路的框图400。每个入口端口和处理电路200(图2)包括入口处理诊断事件源电路402,其被配置为
检测预编程的诊断事件并发出预编程的诊断事件的信号(例如,在编程诊断事件步骤304中编程的事件,图3)。
69.以类似的方式,共享全局缓冲区204(图2)包括共享全局缓冲区诊断事件源电路404,转发表206包括转发表诊断事件源406,排队系统208包括排队系统诊断事件源408并且每个出口端口和处理电路202包括出口处理诊断事件源410。
70.ddc 222从ncd中的所有源接收诊断信令,并且作为响应,可以开始相应诊断数据的dma传输(流程图300的步骤308,图3)。
71.应当理解,图4中所示和上文描述的诊断事件信令400是作为示例引用的示例实施方式。在替代实施方式中可以使用其他诊断事件信令方案。在一些实施方式中,例如,电路402到410(或其子集)可以将诊断事件的检测用信号发出到cpu(例如,cpu 226),cpu然后可以将诊断事件用信号发出到ddc 222。在其他实施方式中,诊断事件信令可以通过串行或并行总线执行。
72.图5是框图500,其示意性地示出了根据本发明的实施方式的用于在ncd 102中传输诊断数据的dma方案。每个入口端口和处理电路200、共享全局缓冲区204、转发表206、排队系统208和出口端口和处理电路202(图2)(将统称为作为诊断数据源)被配置为通过诊断数据总线502将相应的诊断数据发送到诊断缓冲区504。ddc 222控制dma传输,将诊断总线授予诊断数据源之一,并设置要传输的数据的起始地址和结束地址。
73.在一些实施方式中,当诊断数据的预定义目的地是cpu 226或cpu 226的存储器中的地址范围(未示出)时,ddc将诊断数据dma传输到cpu 226或cpu存储器。在其他实施方式中,当诊断数据的预定义目的地是托管ncd的主机cpu或主机cpu的存储器中的地址范围时,ddc dma通过系统总线(未示出)将诊断数据传输到主机和/或主机存储器。
74.应当理解,图5中所示和上文描述的dma方案500是作为示例引用的示例实施方式。在替代实施方式中可以使用其他dma方案。例如,在一些实施方式中,诊断数据缓冲区504被分布,并且经由多个总线耦合到诊断数据源。在实施方式中,诊断数据缓冲区504被嵌入在共享全局缓冲区204(图2)中。
75.图6是框图600,其示意性地示出了根据本发明的实施方式的从ncd输出诊断数据的诊断数据输出电路。在步骤308(图3)之后,诊断数据被存储在诊断数据缓冲区504(图5)中,其中ddb dma传输与一个或多个检测到的诊断事件相关联的诊断数据。
76.图6所示的示例实施方式描述了其中可以从ncd 102输出诊断数据的三个路径,指定路径a、路径b和路径c。
77.路径a可用于通过网络将诊断数据发送到例如远程诊断站110(图1)。在一些实施方式中,ddc接收的诊断数据的预定义目的地包括对等ncd(例如,ncd内的cpu或托管ncd的主机)的地址;来自诊断数据缓冲区504的诊断数据被输入到分组封装器602,该分组封装器向诊断数据添加报头和尾部,并将分组发送到转发表206。转发表206接收打包的诊断数据(以及转发表从共享全局存储器204接收的非诊断分组),并通过排队系统208和出口端口和处理202之一将诊断分组发送到网络104。
78.当诊断站是本地的、通过本地串行端口604(例如,通用串行总线(usb))耦合到ncd 102时,可以使用类型b路由。数据从诊断数据缓冲区504路由到串行端口接口606,串行端口接口606将诊断数据输出到耦合到串行端口的诊断站。在这种情况下,通信是双向的—诊断
站可以从诊断数据缓冲区中提取诊断数据。
79.当ncd执行诊断时,可以使用类型c路由;例如,通过运行在cpu 226(或嵌入在ncd 102中的任何其他处理器上)的诊断软件。cpu 226可以读取诊断数据缓冲区或其部分,并诊断与预定义诊断事件相关联的数据。
80.应当理解,图6中所示和上文描述的诊断数据输出电路是作为示例引用的示例实施方式。在替代实施方式中可以使用其他电路。例如,在一些实施方式中,诊断数据缓冲区504被嵌入在共享全局缓冲区204中。在实施方式中,当诊断数据被存储在诊断数据缓冲区中时完成分组封装。在其他实施方式中,诊断数据缓冲区504耦合到系统总线(例如,高速外围组件互连(pcie)),并且由耦合到系统总线的处理器从诊断数据缓冲区读取诊断数据。
81.图1至图6所示的包括ddc 222的ncd 102的配置和流程图300的方法是示例配置和流程图,其纯粹为了概念清楚而描述。在替代实施方式中可以使用任何其他合适的配置和流程图。ndc和ddc可以使用合适的硬件来实现,例如在一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)中,使用软件、使用硬件或使用硬件和软件元件的组合。
82.在一些实施方式中,由ddc 222执行的一些或全部功能可由cpu226执行。在实施方式中,ddc 222可以使用一个或多个通用可编程处理器来实现,这些处理器在软件中被编程以执行这里描述的功能。软件可以通过例如网络以电子形式下载到处理器,或者它可以替代地或附加地提供和/或存储在非暂时性有形介质上,例如磁、光或电子存储器。
83.应当理解,上述实施方式是通过示例的方式引用的,并且本发明不限于上文具体示出和描述的内容。相反,本发明的范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述描述后会想到的并且未在现有技术中公开的变化和其修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献