支持灵活的数据缩减操作的网络元件的制作方法

文档序号:25992069发布日期:2021-07-23 21:04阅读:73来源:国知局
支持灵活的数据缩减操作的网络元件的制作方法

本文描述的实施方式总体上涉及网络中计算,尤其涉及用于支持灵活的数据缩减操作的网络元件的方法和系统。



背景技术:

一些计算系统支持通信系统的网络元件执行计算任务。在多个网络元件之间分发计算的方法在本领域中是已知的。例如,美国专利10,284,383描述了数据网络中的交换机,该交换机被配置为调解网络元件之间的数据交换。该装置还包括处理器,该处理器将网络元件组织成具有根节点网络元件、顶点节点网络元件和包括叶节点网络元件的子节点网络元件的分层树。叶节点网络元件发起聚合数据并将聚合数据传输到相应的父顶点节点网络元件。顶点节点网络元件组合来自子节点网络元件的至少一部分的聚合数据,并将组合的聚合数据从顶点节点网络元件传输到父顶点节点网络元件。根节点网络元件可操作用于对聚合数据发起缩减操作。



技术实现要素:

本文描述的实施方式提供了一种网络单元,其包括:多个端口、多个计算模块、可配置的转发电路和中央块。多个端口包括耦合到相应的子网络元件或网络节点的多个子端口以及耦合到相应的父网络元件的一个或多个父端口。所述多个端口被配置为连接到通信网络。多个计算模块被配置为根据数据缩减协议共同执行数据缩减操作。可配置的转发电路被配置为在所述端口和所述计算模块之间互连。中央块被配置为接收请求,其指示所选择的子端口、所选择的父端口以及对经由所选择的子端口从所述子网络元件或网络节点接收的数据执行数据缩减操作所需的计算模块,以产生经由所选择的父端口发往父网络元件的缩减的数据,从所述请求中,导出拓扑,所述拓扑在所选择的子端口、所选择的父端口和所述计算模块之间互连,以便执行所述数据缩减操作,并转发所述相应的缩减数据以传输至所选择的父端口,和配置所述转发电路以应用所述拓扑。

在一些实施方式中,所选择的子端口被配置为接收包括缩减操作和相应数据部分的数据消息,并且将所述缩减操作发送到所述中心块,并且所述中心块被配置为设置所述计算模块以将所述缩减操作应用于所述数据部分。在其他实施方式中,所述中央块被配置为以链状配置来导出所述拓扑,以使经由所选择的子端口接收用于缩减的数据的计算模块互连。在又一其他实施方式中,所述中央块被配置为导出所述拓扑,以互连两个计算模块的输出,所述两个计算模块经由所选择的子端口接收用于缩减的数据作为聚合器计算模块的输入。

在一个实施方式中,所选择的父端口和每个所选择的子端口包括qp响应者和qp请求者,所述qp响应者和qp请求者被配置为分别处理可靠的传输层接收和分组传输。在另一实施方式中,所述中央块被配置为接收第一请求,其指示第一子端口、第一父端口和对经由所述第一子端口接收并发往第一父端口的数据执行第一数据缩减操作所需的第一计算模块,并且进一步接收第二请求,其指示第二子端口、第二父端口和对经由所述第二子端口接收并发往所述第二父端口的数据执行第二数据缩减操作所需的第二计算模块,从所述第一请求中导出用于执行所述第一数据缩减操作的第一拓扑,并从所述第二请求中导出用于执行所述第二数据缩减操作的第二拓扑,和配置所述转发电路以应用所述第一拓扑和所述第二拓扑,以便支持并行执行所述第一数据缩减操作和所述第二数据缩减操作。在又一实施方式中,所述请求指示所述网络元件用作根网络元件,并且所述中央块被配置为从所述请求中导出在所选择的子端口和所述计算模块之间互连的拓扑,以便执行用于产生聚合数据的数据缩减操作并将所述聚合数据路由到一个或多个子端口。

在一些实施方式中,所述请求或单独接收到的请求指示给定的父端口和一个或多个给定的子端口,并且所述中央块被配置为从所述请求中导出使所述给定父端口互连到一个或多个给定子端口的拓扑,以经由所述给定父端口从相应父网络元件接收聚合数据,并经由所述给定子端口将所述聚合数据分发给相应网络元件或网络节点。在其他实施方式中,所述转发电路包括上游转发电路和下游转发电路,其中,所述中央块被配置为并行地向所述上游转发电路应用上游拓扑,以应用所述数据缩减操作,并且向所述下游转发电路应用下游拓扑,以将由根网络元件产生的聚合数据分发给一个或多个网络节点。

根据本文描述的实施方式,另外提供了一种方法,该方法包括:在包括以下的网络元件中:(i)连接到通信网络的多个端口,其包括耦合到相应的子网络元件或网络节点的多个子端口以及耦合到相应的父网络元件的一个或多个父端口,(ii)根据数据缩减协议共同执行数据缩减操作的多个计算模块,以及(iii)在所述端口和所述计算模块之间互连的可配置转发电路,由所述网络元件的中央块接收请求,其指示所选择的子端口、所选择的父端口以及对经由所选择的子端口接收的数据执行数据缩减操作所需的计算模块,以产生经由所选择的父端口发往父网络元件的缩减的数据。从所述请求中,导出拓扑,所述拓扑在所选择的子端口、所选择的父端口和所述计算模块之间互连,以便执行所述数据缩减操作,并转发所述缩减数据以传输至所选择的父端口。由所述转发电路应用所述拓扑。

通过以下结合附图对实施方式的详细描述,可以更全面地理解这些和其他实施方式,其中:

附图说明

图1是示意性地示出根据本文描述的实施方式的支持灵活的网络中计算的计算系统的框图;

图2是示意性地示出根据本文描述的实施方式的在图1的计算系统中支持灵活的数据缩减操作的网络元件的框图;

图3a和图3b是示意性地示出根据本文描述的实施方式的网络元件内的示例数据缩减方案的示图;

图4是示意性地示出根据本文描述的实施方式的在网络元件中执行数据缩减操作的方法的流程图;以及

图5和图6是示意性地示出根据本文描述的实施方式的网络元件内的上游数据缩减流程和下游数据缩减流程的示图。

具体实施方式

总览

本文描述的各实施方式提供了用于使用支持灵活的数据缩减操作的网络元件进行网络中计算的系统和方法。

网络中计算涉及将数据流上的计算划分为由通信网络的网络元件执行的多个子计算。网络元件可以包括任何合适的网络设备,例如交换机或路由器。

在一些实施方式中,网络中计算是由以多层配置形式排列的多个网络元件分层执行。最低级别的网络元件从多个网络节点接收数据流的各部分,并根据数据部分产生部分结果。较高级别的元件进一步将部分结果聚合到产生最终计算结果的根网络元件。根网络元件通常将最终计算结果分发给提供数据的某些或所有网络节点,和/或分发给其他网络元件。

网络元件作为网络中计算的一部分而产生的部分结果在本文中也称为“缩减数据”,而根网络元件所产生的最终结果在本文中也称为“聚合数据”。建模分层网络中计算的逻辑结构称为“数据缩减树”。

网络中计算通常根据数据缩减协议来实现。这类示例数据缩减协议是在上面引用的美国专利10,284,383中描述的可扩展分层聚合和缩减协议(sharptm)。数据缩减协议通常指定网络节点和网络元件相互交换以传递数据和控制的消息。与数据缩减协议有关的消息通常包括多个分组,其中每个分组都包括传输层数据包头和有效载荷。在一些实施方式中,消息的第一分组包括基础数据缩减协议的报头,例如sharp报头。

实施网络中计算的重要要求是在多个相应的高带宽数据流上并行且低延迟地高效地执行多个复杂的计算。例如,在2019年3月19日提交的elias等人的美国专利申请号16/357,356中描述了加速硬件中的数据缩减操作的某些方面。

原则上,多个数据缩减树可以用于并行地对多个相应的网络中计算进行建模,然而,这样的数据缩减树可以在相应网络元件上使用单独的端口和计算资源集,在这种情况下,它们可以维持完整的端口带宽。不共享端口的缩减树也称为“不相交的缩减树”。

在公开的实施方式中,每个网络元件包括用于在硬件中执行数据缩减操作的多个计算模块。在某些实施方式中,接收缩减数据的每个端口都有相应的计算模块。计算模块和端口可以使用各种拓扑中的可配置转发电路来互连。这允许在单独的缩减树中灵活使用计算模块,而无需共享端口带宽。

考虑网络元件,其包括耦合到网络元件和/或网络节点的多个端口。耦合到相应子网络元件或网络节点的端口称为“子端口”,耦合到相应父网络元件的端口称为“父端口”。网络元件还包括多个计算模块、可配置的转发电路和中央块。端口被配置为连接到通信网络。多个计算模块被配置为根据数据缩减协议来共同执行数据缩减操作。转发电路被配置为在端口和计算模块之间互连。中央块被配置为接收请求,其指示所选择的子端口、所选择的父端口以及对经由所选择的子端口接收的数据执行数据缩减操作所需的计算模块,以产生经由所选择的父端口发往父网络元件的缩减数据。中央块从请求中导出拓扑,该拓扑在所选择的子端口、所选择的父端口和计算模块之间互连,以便执行请求的数据缩减操作并将缩减的数据转发以传输到所选择的父端口,并配置转发电路以应用拓扑。

在一些实施方式中,所选择的子端口被配置为接收包括缩减操作和相应数据部分的数据消息,并且将缩减操作发送到中央块。中央块被配置为设置计算模块以将缩减操作应用于数据部分。

中央块可以任何合适的方式导出拓扑。例如,中央块导出拓扑,该拓扑以链配置或以聚合两链或更多链的聚合配置互连从子端口接收数据的多个计算模块。在一些实施方式中,网络元件例如在存储器中的表中存储多个预定义的拓扑。在这样的实施方式中,中央块通过从表中检索请求的拓扑来导出请求的拓扑。

在一些实施方式中,父端口和子端口中的每一个包括qp响应者和qp请求者,其处理与数据缩减协议有关的分组的可靠传输层通信。在端口级别处理传输层通信(而不是通过诸如中央块的中央组件)允许在全端口带宽下去往/来自向其他网络组件和网络节点的快速和可靠分组传输。

在一些实施方式中,中央块接收第一数据缩减请求,其指示第一子端口、第一父端口和对经由第一子端口接收的并发往第一父端口的数据执行第一数据缩减操作所需的第一计算模块,并进一步接收第二数据缩减请求,其指示第二子端口、第二父端口和对经由第二子端口接收的并发往第二父端口的数据执行第二数据缩减操作所需的第二计算模块。中央块从第一请求中导出用于执行第一数据缩减操作的第一拓扑,并且从第二请求中导出用于执行第二数据缩减操作的第二拓扑。中央块配置转发电路以应用第一拓扑和第二拓扑两者,以便支持并行执行第一数据缩减操作和第二数据缩减操作。

第一拓扑和第二拓扑可以使用端口和计算模块的不相交的子集。中央块可以配置转发电路以应用所导出的第一拓扑和第二拓扑,从而在全端口带宽下执行相应的数据第一缩减操作和第二缩减操作,并且可以在时间上重叠。

在一些实施方式中,该请求指示该网络元件用作根网络元件,并且该中央块从该请求中导出在所选择的子端口和计算模块之间互连的拓扑,以便执行数据缩减操作以产生聚合数据并将聚合数据路由到一个或多个子端口。

在一个实施方式中,该请求或单独接收的请求指示给定的父端口和一个或多个给定的子端口,并且中央块被配置为从该请求中导出将给定的父端口与一个或多个给定的子端口互连的拓扑,用于经由给定的父端口从相应的父网络元件接收聚合数据,并经由给定的子端口将聚合数据分发给相应的网络元件或网络节点。

在一个实施方式中,转发电路包括上游转发电路和下游转发电路。在该实施方式中,中央块并行地将上游拓扑应用于上游转发电路以应用数据缩减操作,并且将下游拓扑应用于下游转发电路以将由根网络元件产生的聚合数据分发给一个或多个网络节点。

在所公开的技术中,网络元件支持端口和计算模块之间的灵活互连,而不用不必要地使用仅用于传递数据的计算模块,因此避免了带宽共享。接收用于缩减的数据的端口具有本地计算模块,该本地计算模块可以例如以具有适当长度的串行链或以聚合多个链的聚合配置互连。经由转发电路连接计算模块的这种灵活性允许有限资源在不同时间执行不同的数据缩减操作和/或在不共享端口带宽的情况下并行执行多个数据缩减操作时的有效利用。

系统描述

图1是示意性地示出根据本文描述的实施方式的支持灵活的网络中计算的计算系统20的框图。

例如,计算系统20可以用于各种应用中,例如高性能计算(hpc)集群、数据中心应用和人工智能(ai)。

在计算系统20中,多个端节点28通过通信网络32彼此通信。“端节点”28在本文中也被称为“网络节点”。通信网络32可以包括使用诸如infinibandtm网络或以太网的任何适当协议进行操作的任何适当类型的通信网络。端节点28使用网络接口控制器(nic)36耦合到通信网络。在infiniband术语中,网络接口称为主机通道适配器(hca)。端节点28可以包括任何合适的处理模块,例如服务器或包括例如一个或多个图形处理单元(gpu)或其他类型的加速器的多核处理模块。端节点28通常包括(未示出)多个处理单元,例如中央处理单元(cpu)和图形处理单元(gpu),其经由合适的链路(例如,pcie)耦合到存储器和外围设备(例如,nic36)。

通信网络32包括以多级配置互连的多个网络元件24,其使得能够使用数据缩减技术来执行复杂的网络中计算。在本示例中,网络元件24以具有较低层、中间层和顶层的树形配置布置,分别包括网络元件24a、24b和24c。通常,网络元件24a使用nic36连接到多个端节点28。

实际的计算系统20可以包括使用数百或数千个网络元件24互连的数千个甚至数万个端节点28。例如,计算系统20的通信网络32可以配置在包括大约3500个交换机的四级胖树拓扑中。

在多级树结构中,网络元件可以连接至较低级别的子网络元件或网络节点,以及较高级别的父网络元件。顶层的网络元件也称为根网络元件。物理树结构的网络元件的子集(或全部)可以形成数据缩减树,这是通常用于对网络中计算进行建模的逻辑结构,如下所述。

在一些实施方式中,多个网络元件24针对一些或全部网络节点28执行计算。网络元件如使用合适的数据缩减树所建模地共同执行计算。在分层计算中,较低级别的网络元件产生部分结果,这些结果将由数据缩减树的较高级别的网络元件聚合。用作数据缩减树的根的网络元件产生最终的计算结果(聚合数据),该结果通常分发给一个或多个网络节点28。由网络元件24进行的用于产生部分结果的计算也称为“数据缩减操作”。

从网络节点到根的数据流也称为“上游”,并且在上游方向使用的数据缩减树也称为“上游数据缩减树”。从根到网络节点的数据流也称为“下游”,并且在下游方向使用的数据缩减树也称为“下游数据缩减树”。

典型地,使用适当的数据缩减协议来执行将数据流上的计算中断为网络元件24进行的分层网络中计算。示例数据缩减协议是上面引用的美国专利10,284,383中描述的sharp。

如下所述,网络元件24支持端口和计算资源的灵活使用,以并行执行多个数据缩减操作。这使得能够在计算系统20中进行灵活且有效的网络中计算。

支持灵活的数据缩减操作的网络元件

图2是示意性地示出根据本文描述的实施方式的在图1的计算系统20中支持灵活的数据缩减操作的网络元件24的框图。

网络元件24可以用于例如在通信网络32中实现网络元件24a、24b和24c。

网络元件24包括中央块40,该中央块40根据基础数据缩减协议(例如,上述的sharp)管理网络元件的操作。中央块40的功能将在下面更详细地描述。

网络元件24还包括可配置转发电路42,其使用固定连接44连接到网络元件内的各种元件24。转发电路42可灵活地配置为在其连接到的相应元件之间互连。这允许创建用于执行数据缩减操作的端口和计算资源的各种拓扑。在实施方式中,转发电路42包括可配置的交叉开关。互连的灵活性有助于支持整个端口带宽的能力。

网络元件24包括用于将网络元件连接到通信网络32的多个端口46。端口46中的每一个既用作用于从通信网络接收分组的输入端口,又用作用于向通信网络发送分组的输出端口。实际的网络元件24可以包括例如64至128个端口46。替代地,也可以使用具有任何其他合适数量的端口的网络元件。

在一些实施方式中,每个端口46分别耦合到表示为“trm-rx”的传输层接收模块48和表示为“trm-tx”的传输层发送模块52。端口46的输入部分经由解析器56耦合到trm-rx48。trm-rx48包括qp响应者60和计算模块64,其在本文中也称为算术逻辑单元(alu)。trm-tx包括qp请求者68。trm-rx48还包括用于存储输入分组的称为rx-buffer的接收缓冲器70。trm-tx52还包括用于存储输出分组的称为tx-buffer的发送缓冲器71。

在一些实施方式中,中央块40控制转发电路42和alu64的配置的内部连接,以便端口和alu在适合于执行所请求的数据缩减操作的拓扑中互连。

解析器56被配置为解析输入的分组,并且识别相关的分组并将其发送到trm-rx48。

在一些实施方式中,解析器56识别出接收到应用数据缩减操作的请求,并将该请求通知给中央块40。该请求可以指示在上游方向上所需的拓扑、在下游方向上所需的拓扑或两者。上游拓扑和下游拓扑中可以分别使用相同或不同的端口。数据缩减操作本身(例如,指示应当配置alu64的功能)可以在请求中指定,该请求指示拓扑(或多个拓扑),或者替代地,携带在数据消息的报头中。

上游拓扑支持对经由多个子端口从某些子网络元件接收的数据的数据缩减操作,以产生经由父端口发往给定父网络元件的缩减数据。下游拓扑指定父端口,用于经由给定的父端口接收聚合数据,并将该聚合数据分发到某些子端口。

在上游方向上,该请求指示所选择的子端口、所选择的父端口以及执行数据缩减操作所需的计算模块。中央块从请求中导出拓扑,该拓扑在所选择的子端口、所选择的父端口和alu之间互连,以便执行数据缩减操作并将得到的缩减数据转发到所选择的父端口。如上所述,实际的alu功能可以在请求中指定,也可以在单独的数据消息中指定。

在一些实施方式中,所选择的子端口接收包括缩减操作和相应数据部分的数据消息,并将缩减操作发送到中央块,该中央块设置计算模块以将缩减操作应用于数据部分。

在下游方向上,该请求指示给定的父端口和一个或多个给定的子端口,并且中央块从该请求派导出拓扑,该拓扑将给定的父端口与一个或多个给定的子端口互连,以经由给定的父端口从相应的父网络元件接收聚合数据,并经由给定的子端口将聚合数据分发给相应的网络元件或网络节点。

传输层模块trm-rx48和trm-tx52经由端口46处理与其他实体的可靠连接,例如另一个网络元件的端口或某个网络节点28的nic的端口。trm-rx48中的qp响应者60处理经由端口46的可靠数据接收。trm-tx中的qp请求者68处理经由端口46的可靠数据发送。

在一些实施方式中,qp响应者60接收由相应的qp请求者发送的分组,并发回ack/nack通知。qp请求者68将分组发送到链路另一侧上的相应qp响应者,并根据需要处理重传。

注意,由于每个端口46具有本地qp响应者60和本地qp请求者68,所以可以以线速和最小的等待时间执行网络元件(和网络节点)之间的通信。这(以及经由转发电路的灵活连接)允许使用相应的不相交的数据缩减树在全端口带宽下并行执行多个数据缩减操作。

网络元件24包括一个或多个聚合器72,每个聚合器包括与trm-rx模块48的alu64相同或相似的alu74。聚合器72不直接从任何端口46接收数据。相反,聚合器72聚合由trm-rx48的alu64输出的数据。在实施方式中,聚合器72还可以聚合由另一聚合器的alu74输出的数据以创建分层计算拓扑。

如下所述,alu64的功能也类似地适用于alu74。在本示例中,alu64(和alu74)包括两个输入和一个输出。令a1和a2表示输入自变量,令a3表示alu计算的结果。alu通常支持多个预定义功能,中央模块可以向alu配置这些预定义功能。当配置为给定函数“f()”时,alu将a3计算为a3=f(a1,a2)。alu64和74支持任何合适的操作,例如数学函数,例如整数和浮点加法、乘法和除法以及逻辑函数,例如,逻辑and、or和xor、按位and、or和xor。alu64和74支持的其他操作包括例如min、max、minloc和manloc。在一些实施方式中,alu64和74支持可配置的运算符。

在一些实施方式中,经由端口46(从子网络元件或从网络节点)接收的数据被提供给alu64的一个输入。alu64可以被配置为null功能,在这种情况下,alu的另一输入被忽略,从端口接收的数据由alu64输出而不做任何修改。替代地,alu64在其其它输入(经由转发电路)上接收由另一个alu64计算的数据,并将函数f()应用于在两个输入上接收的数据。alu74通常经由转发电路接收由两个alu64输出的数据。在执行数据缩减操作时,参与的alu64和alu74由中央块配置为公共函数f()。替代地,分发给给定数据缩减操作的alu中的至少一些(64、74或两者)可以被配置为应用不同的功能。

如上所述,可以经由转发电路将alu64的输出作为输入路由到另一个alu64(或alu74)。替代地,alu64的输出可以经由转发电路被路由到父端口的qp请求者,以发送到父网络元件。在根网络元件中,导出由基础缩减树指定的计算的最后一个alu64的输出可以路由到参与下游树的子端口的qp请求者。

作为示例给出了图1和图2中的计算系统20和网络元件24的配置以及下面的图5和图6中的网络元件24,并且也可以使用其他合适的计算系统和网络元件配置。

网络元件24的某些元件,例如中央块40、转发电路42(可能在下面的图5和图6中实现为单独的上游交叉开关82和下游交叉开关84)、alu64、alu74、解析器56、qp响应者60、qp请求者68、接收缓冲器70和发送缓冲器71可以在硬件中实现,例如,在一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)中实现。附加地或替代地,可以使用软件或使用硬件和软件元件的组合来实现网络元件的一些元件。

为清楚起见从图1、图2、图5和图6中省略了对于理解本申请的原理不是必需的元件,诸如各种接口、寻址电路、定时和排序电路以及调试电路。

在一些实施方式中,中央块40的一些功能可以由通用处理器执行,该通用处理器在软件中被编程为执行本文描述的功能。该软件可以例如通过网络以电子形式下载到处理器,或者可以替代地或附加地将软件提供和/或存储在非暂时性有形介质上,例如,磁性、光学或电子存储器。

网络元件内的示例计算配置

图3a和图3b是示意性地示出了根据本文描述的实施方式的网络元件24内的示例数据缩减方案的图。

在图3a中,表示为alu1…alu4的alu64以菊花链拓扑结构串联连接。链中连续alu64之间的连接(以虚线表示)是在中央块40的控制下在转发电路42内实现的。

alu1…alu4经由表示为port1…port4的相应端口从子网络元件(或从网络节点28)接收表示为d1…d4的数据,并且被共同配置为执行数据缩减操作。在本示例中,数据缩减操作计算总和(d1+d2+d3+d4)。为此,将alu1配置为将d1传输到alu1的输出,并且alu2…alu4中的每一个都计算其输入之间的求和函数。累计如下执行计算:alu2输出总和(d1+d2),alu3输出总和[(d1+d2)+d3],alu4输出最终总和{[(d1+d2)+d3]+d4}。由alu4输出的数据缩减结果(d1+d2+d3+d4)经由转发电路42经由port5路由到父网络元件。

在图3b中,表示为alu1…alu4的alu64和表示为alu5的alu74以聚合拓扑连接。在中央块40的控制下,在转发电路42内实现从每个alu输出到下一个alu的输入的连接(虚线)。

alu1…alu4经由表示为port1…port4的相应端口从子网络元件接收表示为d1…d4的数据,并且与alu5一起共同配置为执行数据缩减操作,在本示例中,计算总和(d1+d2+d3+d4)。图3b中的拓扑包括包含alu1和alu2的第一链和包含alu3和alu4的第二链。转发电路将alu2和alu4的输出连接到alu5的输入。alu1和alu3被配置为将其输入数据(d1和d3)传输到其相应的输出,并且alu2、alu4和alu5中的每一个都计算其输入之和。

包含alu1和alu2的链计算部分和(d1+d2),包含alu3和alu4的链计算部分和(d3+d4)。alu5计算聚合结果[(d1+d2)+(d3+d4)],转发电路将其路由到端口5,以传输到父网络元件。

在图3a和图3b的示例中,端口和alu互连的两个不同拓扑被用于计算相同的和(d1+d2+d3+d4)。在图3a中,在四个alu的链上累积计算。在图3b中,计算聚合了两个短链,因此,图3b中的计算等待时间比图3a中的计算等待时间短。

作为示例给出了图3a和图3b中的数据缩减拓扑,并且也可以使用其他合适的拓扑。例如,由于转发电路42是可灵活配置的,因此可以使用具有使用多个聚合器72的多个聚合级别的复杂拓扑。而且,中央块40可以分发不同组的端口和alu,以并行执行多个相应的数据缩减操作。这允许计算系统20使用不相交的数据缩减树并行地执行多个高带宽的网络中计算,所述不相交的数据缩减树在每个网络元件内具有单独的相应组端口和alu。

数据缩减的方法

图4是示意性地示出了根据本文描述的实施方式的用于在网络元件24中执行数据缩减操作的方法的流程图。

将针对上游和下游方向描述该方法。

图4的方法开始于中央块40在请求接收步骤100处根据数据缩减协议接收数据缩减请求。中央块可以从一个或多个子网络元件或使用某些带外链路接收数据缩减请求。数据缩减请求包括与要由网络元件实现的数据缩减树有关的信息,通常将其作为由计算系统20使用合适的数据缩减树执行计算的一部分。

该请求指示所选择的子端口、所选择的父端口以及应用数据缩减操作所需的计算模块。相同的数据缩减请求支持对将经由所选择的子端口从某些子网络元件接收的数据进行多种不同的缩减操作,以产生经由所选择的父端口发往父网络元件的缩减数据。执行数据缩减操作通常需要使用alu64进行数据操作,可能使用聚合器72的一个或多个alu74。在本示例中,在上游和下游方向上使用相同的所选择的子端口和所选择的父端口。

在拓扑导出步骤104处,中央块40从数据缩减请求中导出在所选择的子端口、所选择的父端口和计算模块(alu64、74或两者)之间互连的拓扑,以执行数据缩减操作并转发缩减的数据以传输到所选择的父端口。进一步在步骤104处,中央块配置转发电路42以应用导出的拓扑。

当网络元件包括根网络元件时,拓扑将最后一个alu计算出的聚合数据路由到相关子端口的qp请求者,这些子端口根据相应的下游树来分发聚合数据。

在数据消息接收步骤106处,中央块经由所选择的子端口接收从子网络元件或网络节点接收的数据消息的报头部分。每个数据消息包括多个分组。数据消息例如在报头部分(例如,在第一分组中)中指定要使用已经配置的拓扑执行的数据缩减操作。在一些实施方式中,解析器56将数据消息的报头部分分发送到控制块,并将数据消息的有效载荷数据转发到相关的计算模块。

在计算模块配置步骤108处,中央块40将参与数据缩减操作的计算模块配置为在数据消息的报头中指定的功能。步骤108与上游方向有关,并且可以在下游方向上跳过。

在上游数据流步骤116处,基于数据消息分发的计算模块将指定的数据缩减操作应用于数据消息中接收的数据有效载荷,并且所产生的缩减数据经由所选择的父端口发送到父网络元件。

当网络元件包括根网络元件时,所得到的缩减分组包括聚合数据,该聚合数据经由转发电路发送到所有所选择的子端口。在下游数据流步骤120处,网络元件从所选择的父端口接收聚合数据,并经由转发电路将聚合数据分发给所选择的子端口。在步骤120之后,该方法终止。

在父端口和子端口的每个qp请求者上方的步骤116和步骤120负责在可靠的连接上或在传输层上发送消息。

在一些实施方式中,可以假设不同的上游和下游数据缩减树类似地执行图4的方法。在这些实施方式中,可以将不同组的所选择的子端口和父端口用于相应的上游和下游方向。

上游和下游示例流

图5和图6是示意性地示出根据本文描述的实施方式的网络元件24内的上游和下游数据缩减流的图。

在图5和图6中,转发电路42包括上游转发电路82和下游转发电路84,它们可以被实现为单独的交叉开关元件。

在描述图5和图6时,假设网络元件位于比根级别低的级别。进一步假设转发电路42包括单独的上游交叉开关82和下游交叉开关84,并且相同的数据缩减树用于上游和下游方向。

图5和图6中的流程步骤在图中编号,并将在下面描述。

在上游方向上,如图5所示,在步骤(1)处,中央块40根据上游数据缩减树,将上游交叉开关82配置为在端口46和计算模块(聚合器72的alu64和alu74)之间连接。在本示例中,中央块配置端口46a和46b用于接收来自子网络元件的用于缩减的数据,并且配置端口46c用于将所计算的缩减的数据发送到父网络元件。中央块40另外配置上游交叉开关以链配置串行地连接alu64a和64b,其输出连接到alu74的输入。alu74的另一输入经由上游交叉开关连接到alu64的另一链(未示出)。

在步骤(2)处,相应端口46a和46b的qp响应者60a和60b从子网络元件接收数据消息的分组。在数据消息中,每个分组包括传输层报头和有效载荷,其中数据消息的第一分组另外包括sharp报头。每个端口的qp响应者处理传输层,并且在将sharp报头发送到中央块之后,将分组的有效负载转发到该端口的alu64。在步骤(3)处,子端口的trm-rx模块48将第一分组的sharp报头转发到中央块,该中央块在步骤(4)处准备用于发送缩减数据的sharp报头。进一步在步骤(4)处,中央块设置alu64和74以应用在第一分组中指定的功能。

在步骤(5)和步骤(6)处,alu64a和64b对经由子端口46a和46b在每个数据消息中接收的有效载荷执行数据缩减。在步骤(7)和(8)处,聚合器72的alu74从alu64b和另一链接收部分缩减的数据,并且在步骤(9)处,alu74计算总体缩减数据。在步骤(10)处,将缩减的数据转发到端口46c以传输到父网络元件。

在步骤(11)处,qp请求者68c打包包含缩减数据和步骤(4)的sharp报头的缩减数据消息,并通过将传输层报头附加到缩减数据消息的每个分组来重建传输层。qp请求者68c处理可靠的传输层分组传输,包括重传。在一些实施方式中,qp请求者使用端口的本地缓冲器(例如,传输缓冲器71)的一些存储空间作为用于重传的重试缓冲器。在一些实施方式中,在步骤(12)处,网络元件将合适的调度方案(未示出)应用于经由端口46c的分组传输,包括例如使用虚拟通道(vl)管理的带宽分发和优先级划分。

在下游方向上,如图6所示,在步骤(1)处,中央块40将下游交叉开关84配置为在端口46之间连接,以根据下游数据缩减树将从父网络元件接收的聚合数据分发到多个子网络元件。在本示例中,中央块配置父端口46c以从父网络元件接收聚合数据,并配置子端口46a和46b以将聚合数据发送到相应子网络元件或端节点。中央块40另外配置下游交叉开关,以将聚合数据并行地转发到两个子端口46a和46b。

在步骤(2)处,端口46c的qp响应者60c从父网络元件接收在聚合数据消息中携带聚合数据的分组。在聚集的数据消息中,每个分组包括传输层报头和有效载荷,并且第一分组另外包括sharp报头。qp响应者60c处理传输层,并且在将sharp报头发送到中央块之后,将分组的有效载荷转发到下游交叉开关。在一些实施方式中,分组的有效载荷经由由中央块配置的alu64c被转发到null函数,使得分组有效载荷被alu无修改地传送。在替代实施方式中,alu64c被旁路,并且分组有效载荷被直接转发到下游交叉开关,如将在下面的步骤(5)处描述的。

在步骤(3)处,端口46c的trm-rx48c将接收到的分组的sharp报头转发到中央块40,并且在步骤(4)处,中央块准备sharp报头,以与聚合数据一起发送到子网络元件。

在步骤(5)和步骤(6)处,下游交叉开关接收聚合数据消息的有效载荷,并将该有效载荷并行地转发到两个子端口46a和46b。

在步骤(7)处,qp请求者68a和68b中的每个对包含聚合数据的聚合数据消息和步骤(4)的sharp报头进行打包,并通过将传输层报头附加到聚合消息的每个分组来重建传输层。qp请求者68a和68b处理传输层分组传输,包括重传。如上所述,在一些实施方式中,qp请求者可以使用端口的本地缓冲器(例如,传输缓冲器71)的存储空间作为用于重传的重试缓冲器。在一些实施方式中,在步骤(8)处,网络元件将用于分组传输的适当的调度方案(未示出)应用于端口46a和46b,包括例如使用虚拟通道(vl)管理进行带宽分发和优先级划分。

作为示例给出上述实施方式,也可以使用其他合适的实施方式。例如,在图5和图6的实施方式中,分别描述上游和下游方向。在一些实施方式中,可以使用针对每个方向的专用交叉开关来并行地应用针对上游和下游方向的相同或不同的相应拓扑,例如,用于计算缩减的数据并分发所得到的聚合数据。

尽管本文描述的实施方式主要解决诸如“全部缩减”和“缩减”操作的数据缩减操作,但是本文描述的方法和系统也可以用于其他应用中,例如用于执行“可靠的组播”、“可靠的广播”、“全部收集”和“收集”操作。

将理解的是,上述实施方式作为示例被引用,并且所附权利要求不限于上文已经具体示出和描述的权利要求。相反,范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述说明后将想到的并且其在现有技术中未公开的其变型和修改。通过引用并入本专利申请的文件应被认为是本申请的组成部分,除了在这些并入文件中以与本说明书中明确或隐含的定义相抵触的方式定义任何术语外,应仅考虑本说明书中的定义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1