CN116828050A - 一种集合通信方法、网卡、网络设备和存储介质 - Google Patents

一种集合通信方法、网卡、网络设备和存储介质 Download PDF

Info

Publication number
CN116828050A
CN116828050A CN202310897089.5A CN202310897089A CN116828050A CN 116828050 A CN116828050 A CN 116828050A CN 202310897089 A CN202310897089 A CN 202310897089A CN 116828050 A CN116828050 A CN 116828050A
Authority
CN
China
Prior art keywords
data packet
aggregation
communication data
communication
packet
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
CN202310897089.5A
Other languages
English (en)
Inventor
郁晨
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.)
Jiangsu Weishi Technology Co ltd
Original Assignee
Jiangsu Weishi Technology Co ltd
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 Jiangsu Weishi Technology Co ltd filed Critical Jiangsu Weishi Technology Co ltd
Priority to CN202310897089.5A priority Critical patent/CN116828050A/zh
Publication of CN116828050A publication Critical patent/CN116828050A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • 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/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

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

Abstract

本文公开了一种集合通信方法、网卡、网络设备和存储介质。所述方法应用于计算节点所包括的网卡,包括,接收第一通信数据包;根据第一通信数据包中包含的在网计算INC标识,将第一通信数据包发送到所述网卡包括的第一INC引擎;INC标识用于指示第一通信数据包为集合通信数据包;根据第一通信数据包对应的集合通信数据包类型,第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;发送至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点的上层业务功能模块。本方案优化了网卡和/或网络设备的通信数据包的处理流程,提升了处理效率,可以满足大规模组网和日益复杂的集合通信系统的性能需求。

Description

一种集合通信方法、网卡、网络设备和存储介质
技术领域
本公开涉及但不限于在网计算技术领域,尤其涉及一种集合通信方法、网卡、网络设备和存储介质。
背景技术
集合通信是分布式系统中各个算力节点(也称为计算节点)之间进行信息交换的通信方式,主要包括规约(Reduce)、全规约(All-Reduce)和广播(Broadcast)等操作。
在人工智能领域中,大模型的训练依靠多算力节点的分布式系统完成。训练模型时,每次迭代(Per Iteration)中的各个算力节点在本地计算结束后,需要在所有算力节点间进行具体为All-Reduce的集合通信来聚合梯度结果,需要等待聚合完毕后各算力节点才能进行下一次迭代。各算力节点执行集合通信的相关操作,往往需要占用大量计算资源,影响其他功能的正常执行。
在网计算(In-Network Computing,INC)是指将运行在服务器CPU或专有硬件设备上的功能,卸载到网络设备上运行,这可以节省设备上宝贵的CPU资源。因此,将集合通信系统中的相关集合操作,采用在网计算方案卸载到网络设备上执行,可以显著降低算力节点本身的资源竞争压力,提高整体集合通信效率。
伴随着高性能计算(High Performance Computing,HPC)以及人工智能(artificial intelligence,AI)技术的自身发展,相关集合操作复杂度日益增大,所涉及的交换网络规模也不断扩大。因此,建立一整套基于在网计算方案的高效的、易实施的、支持大规模组网的集合通信系统,是推动HPC以及AI技术发展应用的重要环节。
发明内容
本公开实施例提供一种集合通信方法、网卡、网络设备和存储介质,在计算节点的网卡和/或交换机硬件中引入专用的INC引擎,根据集合通信数据包中的INC标识,由专用的INC引擎进行数据包处理以实现集合操作的INC卸载,优化了网卡和/或网络设备的通信数据包的处理流程,提升了处理效率,可以满足大规模组网和日益复杂的集合通信系统的性能需求。
本公开实施例提供一种集合通信方法,应用于计算节点所包括的网卡,所述方法包括,
接收第一通信数据包;
根据所述第一通信数据包中包含的在网计算INC标识,将所述第一通信数据包发送到所述网卡包括的第一INC引擎;所述INC标识用于指示第一通信数据包为集合通信数据包;
根据所述第一通信数据包对应的集合通信数据包类型,所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;
发送所述至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点的上层业务功能模块。
本公开实施例还提供一种集合通信方法,应用于集合通信系统所包括的网络设备,所述方法包括,
接收第三通信数据包;
根据所述第三通信数据包中包含的在网计算INC标识,将所述第三通信数据包发送到所述网络设备包括的第二INC引擎;所述INC标识用于指示第三通信数据包为集合通信数据包;
根据所述第三通信数据包对应的集合通信数据包类型,所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存;
在所述第四通信数据包不为空的情况下,发送所述第四通信数据包到所述集合通信系统中的通信网络或计算节点。
本公开实施例还提供一种网卡,包括,
第一数据收发模块和第一在网计算INC引擎;
所述第一数据收发模块设置为,接收第一通信数据包;根据所述第一通信数据包中包含的在网计算INC标识,将所述第一通信数据包发送到所述第一INC引擎;所述INC标识用于指示第一通信数据包为集合通信数据包;
所述第一INC引擎,设置为根据所述第一通信数据包对应的集合通信数据包类型,对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;
所述第一数据收发模块还设置为,发送所述至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点的上层业务功能模块。
本公开实施例还提供一种网络设备,包括
第二数据收发模块和第二在网计算INC引擎;
所述第二数据收发模块设置为,接收第三通信数据包;根据所述第三通信数据包中包含的在网计算INC标识,将所述第三通信数据包发送到所述第二INC引擎;所述INC标识用于指示第三通信数据包为集合通信数据包;
所述第二INC引擎设置为,根据所述第三通信数据包对应的集合通信数据包类型,对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存;
所述第二数据收发模块还设置为,在所述第四通信数据包不为空的情况下,发送所述第四通信数据包到所述集合通信系统中的通信网络或计算节点。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开任一实施例所述的集合通信方法。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本公开实施例提供的一种集合通信方法的流程图;
图2为本公开实施例提供的一种集合通信数据包的结构示意图;
图3为本公开实施例提供的一种包含Header0的集合通信数据包的结构示意图;
图4为本公开实施例提供的一种包含Header1的集合通信数据包的结构示意图;
图5为本公开实施例提供的一种包含Header2的集合通信数据包的结构示意图;
图6为本公开实施例提供的一种分片接收状态统计表和合并示意;
图7为本公开实施例提供的另一种集合通信方法的流程图;
图8为本公开实施例提供的另一种集合通信方法的流程图;
图9为本公开实施例提供的另一种集合通信方法的流程图;
图10为本公开实施例提供的一种聚合树示意图;
图11为本公开实施例提供的一种网卡的结构示意图;
图12为本公开实施例提供的一种计算节点的结构示意图;
图13为本公开实施例提供的一种网络设备的结构示意图;
图14为本公开实施例提供的一种集合通信系统的示意图;
图15为本公开实施例提供的一种聚合树生成上行数据包处理流程示意图;
图16为本公开实施例提供的一种聚合树生成下行数据包处理流程示意图;
图17为本公开实施例提供的一种聚合任务上行数据包处理流程示意图;
图18为本公开实施例提供的一种聚合任务下行数据包处理流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
一些可实现的集合通信系统中,以AI领域的实施方案为例,采用参数服务器或Ring All-Reduce进行数据聚合。
其中,参数服务器方案中,有一台或多台非算力节点的专用服务器被称为参数服务器,由参数服务器负责算力节点间的梯度结果聚合。所有算力节点通过网络将梯度结果发送给参数服务器后,参数服务器进行全规约。聚合后的梯度结果被广播给算力节点后,所有算力节点才开始下一次训练。参数服务器方案的弊端有两点:第一,参数服务器上的通信压力巨大,并且其带宽压力和算力节点个数成正比。如果算力节点个数过多,不堪重负的参数服务器将对整个系统运行速度产生严重影响。第二,不必要的算力闲置和浪费:算力节点在发送待聚合梯度给参数服务器后,就处于阻塞状态。直到它收到聚合结果后才会开始训练的下一次迭代。在这个过程中,各算力节点上的算力资源被浪费。并且由于通常大模型的训练中迭代的次数非常多,因此大量的算力资源被浪费。
Ring All-Reduce是另一种进行梯度数据All-Reduce的方法。在这种方法中,聚合任务由每个算力节点来完成。算力节点之间逻辑成环,所有算力节点都向/从相邻节点发送/接收数据,并完成部分数据的聚合。最终进行2*(节点个数-1)次的梯度数据聚合后,完成All-Reduce的任务。Ring All-Reduce解决了参数服务器方案中个别设备的通信压力过大,而大量设备算力资源浪费的问题。但Ring All-Reduce方案的弊端有两点:第一,其系统中数据通信总量过大,达到参数服务器方案的两倍;第二,All-Reduce过程中,需要消耗各个算力节点上宝贵的CPU资源来进行局部数据聚合。
因此,一些可实现方案提出基于在网计算方案,对集合通信方案进行优化。将算力节点间的集合通信操作,包括全规约(All-Reduce)、规约(Reduce)等,卸载到交换机等支持INC的网络设备上。待聚合数据在网络转发过程中,就由网卡/交换机/路由器等完成了数据聚合的任务。这节约了算力节点上宝贵的CPU资源,并大大减少了集合通信的时间,显著提升了HPC、AI等上层应用运行速度。相比之下,结合在网计算的集合通信技术方案具备了通信总量少、延时低的优势。
可以理解,实际运行的网络设备上,首先要进行的是大量普通网络通信数据包的(包括非INC数据包和INC数据包)转发/路由处理,其次才是针对集合通信进行相关的INC数据包的集合操作处理。同时,对于集合通信相关操作而言,其卸载到网络设备上的相关计算根据应用方案的具体要求,相比于一般的数据包交换/路由处理,需要更多计算资源。因此,在实现整体业务功能的前提下,保障网络设备的整体工作性能,避免卸载到网络设备上的集合通信处理逻辑占用过多设备资源而影响大量基本的网络通信处理流程,是结合INC的集合通信方案中核心要解决的技术问题。
本公开实施例提供一种集合通信方案,在整体方案中涉及的计算节点的网卡和/或网络通信设备的硬件系统中,引入专门的INC引擎,独立于已有处理器,能够以与针对普通网络通信数据包的处理相并行的方式,独立处理INC数据包相关的集合操作,避免了资源竞争,保障了整体工作性能。
本公开实施例提供一种集合通信方案,应用于计算节点所包括的网卡,如图1所示,所述方法包括,
步骤110,接收第一通信数据包;
步骤120,根据所述第一通信数据包中包含的在网计算INC标识,将所述第一通信数据包发送到所述网卡包括的第一INC引擎;所述INC标识用于指示第一通信数据包为集合通信数据包;
步骤130,根据所述第一通信数据包对应的集合通信数据包类型,所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;
步骤140,发送所述至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点。
一些示例性实施例中,所述网卡包括第一数据收发模块和第一INC引擎。
其中,第一数据收发模块执行步骤110,120和140。
一些示例性实施例中,所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包。
本公开实施例中,集合通信系统中的通信网络由一个或多个交换机,和/或,一个或多个路由器构成,可以是两层的无阻塞的Clos网络-叶脊(Spine-Leaf)网络架构,也可以是复杂的三层无阻塞网络-胖树(Fat-tree)网络架构,或者,更加复杂的层次Clos网络,不限于特定的方面。构建所述通信网络的网络通信设备,统称为网络设备,包括交换机、路由器或其他专用通信设备等,不限于特定的方面。
一些示例性实施例中,所述通信网络由一个或多个交换机组成多层网络,也称为交换机网络。
需要说明的是,针对所述集合通信系统,根据其整体系统拓扑结构(计算节点和通信网络),设置网络根设备,在交换机网络中,该网络根设备对应称为根交换机。本公开实施例方案中从计算节点(算力节点)生产并发送,到达网络根设备方向的数据包,统称为上行数据包,由网络根设备处理完毕发出并返回其他网络设备以及计算节点方向的数据包,统称为下行数据包。
对于计算节点而言,其网卡具备数据包收发功能,本申请实施例中,将所述网卡的输入数据包记为第一通信数据包,输出的数据包记为第二通信数据包。在所述计算节点产生并向通信网络发送上行数据包的情况下,计算节点所包括的网卡输入的第一通信数据包,和输出的第二通信数据包,均为上行数据包;其中,输入网卡的第一通信数据包来自计算节点的业务功能模块。在所述计算节点的网卡接收到来自通信网络的下行数据包的情况下,计算节点所包括的网卡输入的第一通信数据包,和输出的第二通信数据包,均为下行数据包;其中,从所述网卡输出的第二通信数据包由网卡输出给所述计算节点的对应业务功能模块。
可以理解,本公开实施例方案中,所述第一通信数据包、第二通信数据包,和上行数据包、下行数据包为相互独立的概念。所述第一通信数据包可以是上行数据包,也可以是下行数据包;所述第二通信数据包可以是上行数据包,也可以是下行数据包。
一些示例性实施例中,所述第一通信数据包包括IP包头;
在所述第一通信数据包为INC聚合树生成上行数据包的情况下,所述第一通信数据包还包括符合第零格式的INC帧头,记为INC Header0;
所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包,包括:
将所述第一通信数据包中所述INC Header0中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换后,得到所述第二通信数据包。
一些示例性实施例中,所述IP包头包括源IP地址和目的IP地址。
需要说明的是,一些示例性实施例中,提供的集合通信方案为以太网通信方案,各类型通信数据包符合以太网数据包规范,包括IP包头(IP头),但并不限定只包括IP(Internet Protocol,互联网协议)包头。本公开实施例涉及的通信数据包,还包括以下一种或多种数据:以太网头、MAC(Media Access Control,介质访问控制)头、UDP(UserDatagram Protocol,用户数据报协议)头、RDMA BTH(Remote Direct Memory Access BaseTransport Header,远程直接数据存取基础传输头)等。
一些示例性实施例中,RDMA BTH为RoCEV2帧头。
可以理解,INC聚合树生成上行数据包包括IP包头,还包括符合第零格式的INC帧头,INC Header0。
一些示例性实施例中,所述INC聚合树生成上行数据包如图2所示,包括IP包头,UDP头,RDMA BTH帧头和INC帧头;其中,所述INC帧头为INC Header0。
一些示例性实施例中,INC帧头中包括:集合通信数据包类型标识,该标识可以指示当前数据包为集合通信数据包,同时可以指示具体集合通信数据包类型。
一些示例性实施例中,所述INC帧头还包括:目的IP缓存字段(destIP_buffer),用于缓存一个独立于IP包头中的目标IP地址的IP地址,以在有需要时利用其替换IP包头中的目的IP地址,以改变通信数据包的目的IP地址。可以理解,所述INC聚合树生成上行数据包中的INC Header0包括目的IP缓存字段。
一些示例性实施例中,所述目的IP缓存字段为设定的网络根设备。以交换机网络为例,INC Header0中的目的IP缓存字段为该交换机网络的根交换机的IP地址。需要说明的是,本公开实施例后续示例中,以交换机和交换网络为例展开记载,但并不限于只适用于交换机和交换机网络,在无特别说明的情况下,可以等效替换为其他网络设备和通信网络。
一些示例性实施例中,根交换机根据接收到的来自全部计算节点的INC聚合树生成上行数据包,构建聚合树,生成并下发INC聚合树生成下行数据包。
一些示例性实施例中,根交换机根据接收到的涵盖全部计算节点的待聚合数据的INC聚合任务上行数据包,完成数据聚合,生成并下发INC聚合任务下行数据包。
一些示例性实施例中,所述INC帧头中包括:INC标识(inc_tag)。
一些示例性实施例中,所述INC标识包括多个集合通信数据包类型标识中的一个。
集合通信系统中,在进行具体的集合通信操作之前,首先需要构建聚合树。例如,计算节点1向计算节点2发送INC聚合树生成上行数据包,计算节点1的上层业务功能模块,发送包含INC标识的INC聚合树生成上行数据包到计算节点的网卡,该上行数据包的INCHeader0中初始的目的IP缓存字段值为设定的根交换机的IP地址,IP包头的目的IP地址为计算节点2的IP地址。计算节点1的网卡执行步骤130,将所述INC Header0中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换;交换后,INC聚合树生成上行数据包的INC Header0中的目的IP缓存字段值为计算节点2的IP地址,IP包头中的目的IP地址为根交换机的IP地址,则步骤130重新封装后得到的第二通信数据包将根据其IP包头中的IP地址,在已构建的交换机网络中被发送到根交换机。可以理解,计算节点上的上层业务功能模块,仍根据已有业务逻辑生成将要发送给其他计算节点的INC聚合树生成上行数据包,由网卡中包括的第一INC引擎完成上述IP交换的步骤,实现数据包重封装,达到改变通信数据包接收对象的目的。
以此类推,集合通信系统中包括的各计算节点生成并发送给其他计算节点的聚合树生成上行数据包,经过各自网卡上的第一INC引擎的重新封装后,都将发送到根交换机。在根交换机收到全部计算节点发出的INC聚合树生成上行数据包后,将产生对应的聚合树生成下行数据包,返回给一个或多个计算节点,最终完成聚合树生成。
一些示例性实施例中,所述INC聚合树生成上行数据包,如图3所示,包括MAC(Media Access Control,介质访问控制)头、IP(Internet Protocol,互联网协议)头、UDP(User Datagram Protocol,用户数据报协议)头、RDMA BTH头、INC Header0和业务数据(载荷payload)。其中,业务数据为空;INC Header0包括INC标识位inc_tag、目的IP缓存字段(destIP_buffer)、目的节点标识(dest_rank_id)、INC任务标识(inc_jobid)、INC通信域标识(inc_comm_id)、通信域中总节点数量(group_rank_nums)、计算节点聚合信息(group_agg_status)、报文方向(direction,上行或下行)。
一些示例性实施例中,inc_tag的后面两个比特位指示集合通信数据包类型;可选地,inc_tag的后面两个比特位+报文方向指示集合通信数据包类型。
一些示例性实施例中,所述第一通信数据包包括IP包头;
在所述第一通信数据包为INC聚合树生成下行数据包的情况下,将所述第一通信数据包作为所述第二通信数据包。
可以理解,计算节点的网卡从交换机网络接收到INC聚合树生成下行数据包时,仍根据其包括INC标识,交由第一INC引擎处理,此时,第一INC引擎保持通信数据包不变。
可选地,一些示例性实施例中,所述INC标识不包括INC聚合树生成下行数据包的类型标识,则网卡中第一数据收发模块不将INC聚合树生成下行数据包交由第一INC引擎处理,直接发送给计算节点的上层业务功能模块。
一些示例性实施例中,所述第一通信数据包包括IP包头;
在所述第一通信数据包为INC聚合任务上行数据包的情况下,所述第一通信数据包还包括符合第一格式的INC帧头,记为INC Header1;
所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包,包括:
将所述第一通信数据包中的待聚合数据,根据设定的分片大小,划分为M个待聚合数据分片,M为大于0的整数;
将所述第一通信数据包中所述INC Header1中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换;
根据交换后的所述INC Header1,转换得到M个符合第二格式的INC帧头,记为INCHeader2;
根据交换后的所述IP包头、M个INC Header2和所述M个待聚合数据分片,重新封装得到M个INC聚合任务上行数据包为所述至少一个第二通信数据包。
可以理解,INC聚合任务上行数据包包括IP包头,还包括符合第一格式的INC帧头,INC Header1;或者,INC聚合任务上行数据包包括IP包头,还包括符合第二格式的INC帧头,INC Header2。
需要说明的是,对包含INC Header1的INC聚合任务上行数据包中业务数据——(待)聚合数据根据设定的分片大小进行分片,是指一个Message中段级(segment)的分片,一个Message被分为多个段segment。而Message级别的分片由计算节点的上层应用功能模块执行,本申请实施例对此不进行详细讨论。具体的段级的分片以及合并方案,根据集合通信相关方案实施,也不在本申请实施例中详细讨论。在无特殊说明的情况下,本公开实施例中记载的分片均为一个Message内的段级分片。
一些示例性实施例中,所述INC聚合任务上行数据包如图2所示,包括IP包头,UDP头,RDMA BTH帧头和INC帧头;其中,第一INC引擎重封装之前的INC聚合任务上行数据包中的INC帧头为INC Header1,重新封装之后得到的M个INC聚合任务上行数据包中的INC帧头为INC Header2。
一些示例性实施例中,第一通信数据包中包括的业务数据量大于设定的分片大小时,第一INC引擎需要进行数据分片,重新封装得到多个第二通信数据包,每一个第二通信数据包均包括INC Header2。
其中,每一个INC Header2根据交换后的INC Header1和对应分片的待聚合数据确定。
可以理解,第一INC引擎将所述第一通信数据包中所述INC Header1中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换,其中,INC Header1中的目的IP缓存字段的初始值为设定的根交换机的IP地址。与第一INC引擎针对INC聚合树生成上行数据包中INC Header0中的目的IP缓存字段值和其IP包头中的目的IP地址字段值进行交换的目的类似,使得交换后的通信数据包能够根据IP包头中目的IP达到根交换机。相应地,每个INC Header2是根据交换后的INC Header1得到,即INC Header2中的目的IP缓存字段值为第一通信数据包中的IP包头中的目的IP地址,包括INC Header2的一个或多个第二通信数据包的IP包头中的目的IP地址为第一通信数据包中INC Header1交换前的目的IP缓存字段值;进而,所述一个或多个第二通信数据包将根据其IP包头中的目的IP地址,送达根交换机。
例如,计算节点1向计算节点2发送INC聚合任务上行数据包,计算节点1的上层业务功能模块,发送包含INC标识的INC聚合任务上行数据包到计算节点的网卡,该上行数据包的INC Header1中初始的目的IP缓存字段值为设定的根交换机的IP地址,IP包头的目的IP地址为计算节点2的IP地址。计算节点1的网卡执行步骤130,将所述INC Header1中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换,并分片生成一个或多个包含INC Header2的INC聚合任务上行数据包;INC聚合任务上行数据包的INC Header2中的目的IP缓存字段值为计算节点2的IP地址,IP包头中的目的IP地址为根交换机的IP地址,则步骤130重新封装后得到的一个或多个第二通信数据包将根据其IP包头中的IP地址,沿着已建立的聚合树,在已构建的交换机网络中被发送到根交换机。可以理解,计算节点上的上层业务功能模块,仍根据已有业务逻辑生成将要发送给其他计算节点的INC聚合任务上行数据包,由网卡中包括的第一INC引擎完成上述数据分片和IP交换的步骤,实现数据包重封装,达到数据包分片和改变通信数据包接收对象的目的。
一些示例性实施例中,所述第一通信数据包包括IP包头;
所述第一通信数据包包括一个或多个;
在所述第一通信数据包为INC聚合任务下行数据包的情况下,所述第一通信数据包还包括符合第二格式的INC帧头,记为INC Header2;
所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包,包括:
根据所述一个或多个第一通信数据包对应的INC Header2,和设定的分片大小,将所述一个或多个第一通信数据包中的聚合结果数据合并为完整的聚合结果数据;
根据所述IP包头和所述完整的聚合结果数据,重新封装得到一个IP数据包作为所述至少一个第二通信数据包。
一些示例性实施例中,所述INC聚合任务下行数据包如图2所示,包括IP包头,UDP头,RDMA BTH帧头和INC帧头,所述INC帧头为INC Header2。
第一INC引擎重新封装后得到第二通信数据包,将交由网卡上的第一数据收发模块发送给计算节点的上层业务功能模块。可以无需携带INC帧头,因此,一些示例性实施例中,第二通信数据包不包括INC Header2,也不包括INC Header1。可以理解,网卡中的第一INC引擎进行分片数据合并,得到包含完整聚合结果数据的第二通信数据包后,发送给计算节点的上层业务功能模块。
一些示例性实施例中,所述包括INC Header1的INC聚合任务上行数据包,如图4所示,包括MAC头、IP头、UDP头、RDMA BTH头、INC Header0和业务数据(载荷payload)。其中,业务数据为(待)聚合的数据(Aggregated Data);INC Header1包括INC标识位inc_tag、目的IP缓存字段(destIP_buffer)、目的节点标识(dest_rank_id)、INC任务标识(inc_jobid)、INC通信域标识(inc_comm_id)、通信域中总节点数量(group_rank_nums)、计算节点聚合信息(group_agg_status)、当前INC通信域中集合通信的任务标识(coll_task_id)、报文方向(direction,上行或下行)、聚合任务的数据类型(data_type)、运算符(op_code)、当前集合通信任务中数据通道个数(channel_nums)、Message级别分片时第几片message(msg_id)、此Message中待聚合数据大小(agg_payload_size)。
一些示例性实施例中,inc_tag的后面两个比特位指示集合通信数据包类型;可选地,inc_tag的后面两个比特位+报文方向指示集合通信数据包类型。
一些示例性实施例中,所述包括INC Header2的INC聚合树生成上行数据包,如图5所示,包括MAC头、IP头、UDP头、RDMA BTH头、INC Header0和业务数据(载荷payload),其中,INC Header0包括INC标识位inc_tag、目的IP缓存字段(destIP_buffer)、目的节点标识(dest_rank_id)、INC任务标识(inc_jobid)、INC通信域标识(inc_comm_id)、通信域中总节点数量(group_rank_nums)、计算节点聚合信息(group_agg_status)、当前INC通信域中集合通信的任务标识(coll_task_id)、报文方向(direction,上行或下行)、聚合任务的数据类型(data_type)、运算符(op_code)、当前集合通信任务中数据通道个数(channel_nums)、Message级别分片时第几片message(msg_id)、此Message中的seg分片标识(seg_id)、此Message中的seg分片数量(seg_nums)、此seg_id分片中待聚合数据大小(agg_payload_size)。
一些示例性实施例中,inc_tag的后面两个比特位指示集合通信数据包类型;可选地,inc_tag的后面两个比特位+报文方向指示集合通信数据包类型。
一些示例性实施例中,计算节点的网卡上保存分片接收状态统计表seg_recomb_recv_status_table和分片数据(payload)缓存表seg_recomb_payload_cache_table,以用于记录分片接收状态,在全部分片接收后,进行分片合并。分片接收状态统计表和合并示意如图6所示。
需要说明的是,本公开实施例记载的集合通信数据包的具体包结构用于说明相关实施例细节,本申请方案的实施并不限于这些具体示例,可以根据相关技术要素等效替换相关字段、扩展新的字段,或根据实际聚合通信业务数据处理需要进行变更。
本公开实施例还提供一种集合通信方法,应用于计算节点,如图7所示,
步骤710,根据集合通信系统所设定的网络根设备,生成INC聚合树生成上行数据包;
步骤720,根据本公开实施例所述的集合通信方法将所述INC聚合树生成上行数据包通过所述计算节点包括的网卡发送到集合通信系统中的通信网络;
步骤730,根据本公开实施例所述的集合通信方法从所述通信网络中接收INC聚合树生成下行数据包;
步骤740,在根据所述INC聚合树生成下行数据包确定已完成聚合树生成的情况下,生成所述集合通信系统的聚合树信息。
一些示例性实施例中,所述方法还包括:
步骤750,通知所述集合通信系统中其他计算节点聚合树已生成。
一些示例性实施例中,步骤750包括:
将所述聚合树信息发送给所述集合通信系统中其他计算节点聚合树。
一些示例性实施例中,所述计算节点包括上层应用功能模块和网卡;
所述上层应用功能模块执行步骤740,生成所述聚合树信息。
需要说明的是,根交换机接收到全部计算节点上发的INC聚合树生成上行数据包后,对应生成INC聚合树生成下行数据包,以告知下发路径上的交换机节点和计算节点,已收集全部数据,可以建立所述聚合通信系统的聚合树。
一些示例性实施例中,所述通信网络为交换机网络。
本公开实施例还提供一种集合通信方法,应用于计算节点,如图8所示,
步骤810,生成INC聚合任务上行数据包;
步骤820,根据本公开实施例所述的集合通信方法将所述INC聚合任务上行数据包通过所述计算节点包括的网卡发送到集合通信系统中的通信网络;
步骤830,根据本公开实施例所述的集合通信方法从所述通信网络中接收INC聚合任务下行数据包,以获得聚合结果。
一些示例性实施例中,步骤810包括:根据已生成的聚合树信息,生成INC聚合任务上行数据包。
一些示例性实施例中,所述通信网络为交换机网络。
需要说明的是,根交换机接收到全部计算节点上发的INC聚合任务上行数据包后,完成最终的数据聚合得到聚合结果,对应生成INC聚合任务下行数据包,携带所述聚合结果以告知计算节点本轮聚合的最后聚合结果(即完整的聚合结果)。计算节点上的上层应用功能模块,再根据本轮聚合结果启动下一轮聚合或其他业务后续业务流程。
根据本公开实施例提供的集合通信方案,独立于网卡原有的通信数据包处理单元,在网卡中引入专有硬件——INC引擎,专门处理具有INC标识的数据包,能够有效提升网卡数据包处理效率,避免INC数据包处理对普通网络通信数据包处理效率的不良影响。
本公开实施例还提供一种集合通信方法,应用于集合通信系统所包括的网络设备,如图9所示,所述方法包括,
步骤910,接收第三通信数据包;
步骤920,根据所述第三通信数据包中包含的在网计算INC标识,将所述第三通信数据包发送到所述网络设备包括的第二INC引擎;所述INC标识用于指示第三通信数据包为集合通信数据包;
步骤930,根据所述第三通信数据包对应的集合通信数据包类型,所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存;
步骤940,在所述第四通信数据包不为空的情况下,发送所述第四通信数据包到所述集合通信系统中的通信网络或计算节点。
一些示例性实施例中,所述网络设备包括:接入层网络设备、汇聚层网络设备或根网络设备(也称为网络根设备)。
一些示例性实施例中,所述网络设备包括交换机。相应地,所述交换机包括:接入层交换机、汇聚层交换机或根交换机。
一些示例性实施例中,所述网络设备包括第二数据收发模块和第二INC引擎;其中,第二数据收发模块执行步骤910,920和940。
可以看到,本公开实施例提供的网络设备,除了负责以太网报文二/三层转发的基本转发功能外,还通过交换机内专门引入的第二INC引擎承担集合通信相关报文的处理。基于专门引入的第二INC引擎,能够使集合通信相关报文处理与基本的数据包转发功能并行,减小了在网计算任务对基本通信性能的影响,提高了网络设备的整体执行执行性能。
一些示例性实施例中,所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包。
对于网络设备(交换机)而言,本身具备数据包收发功能,本申请实施例中,将所述网络设备(交换机)的输入数据包记为第三通信数据包,输出的数据包记为第四通信数据包。在所述网络设备(交换机)接收到来自计算节点或下层网络设备(交换机)发送的上行数据包的情况下,当前网络设备(交换机)输入的第三通信数据包为上行数据包,在所述网络设备(交换机)不是根设备的情况下,输出的第四通信数据包也为上行数据包,而在所述网络设备(交换机)是根设备的情况下,输出的第四通信数据包为下行数据包。
在所述网络设备(交换机)接收到上层网络设备(交换机)发送的下行数据包的情况下,当前网络设备(交换机)输入的第三通信数据包,和输出的第四通信数据包,均为下行数据包;其中,接入层的网络设备(交换机)输出的第四通信数据包发送给对应的计算节点。
可以理解,本公开实施例方案中,所述第三通信数据包、第四通信数据包,和上行数据包、下行数据包为相互独立的概念。所述第三通信数据包可以是上行数据包,也可以是下行数据包;所述第四通信数据包可以是上行数据包,也可以是下行数据包。
一些示例性实施例中,所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合树生成上行数据包的情况下,所述第三通信数据包还包括符合第零格式的INC帧头,记为INC Header0;
所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包,包括:
根据所述第三通信数据包中的INC Header0包括的计算节点聚合信息(group_agg_status),更新所述网络设备本地的计算节点聚合信息(aggr_task_status_table);
在所述网络设备不是集合通信系统所设定的网络根设备的情况下,根据更新后的所述网络设备本地的计算节点聚合信息(aggr_task_status_table),更新所述第三通信数据包中的INC Header0中包括的计算节点聚合信息(group_agg_status),得到所述第四通信数据包;
在所述网络设备是集合通信系统所设定的网络根设备的情况下,将所述第三通信数据包中所述INC Header0中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换,以及根据更新后的所述网络设备本地的计算节点聚合信息,更新所述第三通信数据包中的INC Header0中包括的计算节点聚合信息,得到INC聚合树生成下行数据包作为所述第四通信数据包;
其中,所述INC Header0包括的计算节点聚合信息用于指示当前通信数据包对应的待聚合的源头计算节点;
所述网络设备本地的计算节点聚合信息用于指示所述网络设备对应的聚合树节点包括的源头计算节点。
一些示例性实施例中,所述第三通信数据包的IP包头中的IP地址和所述网络设备的IP地址一致的情况下,所述网络设备确定自身为网络根设备。
一些示例性实施例中,所述第三通信数据包的IP包头中的IP地址和所述网络设备的IP地址不一致的情况下,所述网络设备确定自身为非网络根设备。
可以看到,在所述网络设备是集合通信系统所设定的网络根设备的情况下,网络设备中的第二INC引擎,执行了IP地址交换步骤,与计算节点的网卡中的第一INC引擎执行的IP地址交换步骤是相对应的,INC聚合树生成下行数据包的INC Header0中的目的IP缓存字段值和IP包头中的目的IP地址字段值,恢复为计算节点的网卡中第一INC引擎对INC聚合树生成上行数据包进行IP地址交换之前的内容。基于第二INC引擎进行IP交换后得到第四通信数据包的IP头中的目的IP地址,第四通信数据包将被送达所述INC聚合树生成上行数据包初始生成时设定的目的IP地址。
可以看到,计算节点初始生成INC聚合树生成上行数据包并通过自身网卡发送后,该INC聚合树生成上行数据包虽然经过重封装和/或多次转发,被送达到网络根设备,但最终都能被继续送达至初始设置的目的IP地址。期间,涉及到的两次IP地址交换,分别由网卡中的第一INC引擎和网络根设备中的第二INC引擎执行,计算节点的上层应用功能模块无需知晓。通过该方案在不影响通信数据包最终传送到目的IP地址(目标计算节点)的情况下,还可以借助各网络设备本身的二/三层转发路由,先传送到网络根设备以完成了聚合树生成。
其中,INC聚合树生成上行数据包在第一INC引擎和/第二INC引擎中进行重封装,均保持了第零格式的INC帧头,INC Header0,因此,有关INC聚合书生成上行数据包在第一INC引擎和/第二INC引擎中进行的重封装,也称为INC帧头字段值编辑。
一些示例性实施例中,所述INC Header0中的计算节点聚合信息保存在INCHeader0中的group_agg_status字段,所述group_agg_status字段包括N个比特位,对应N个计算节点;比特位为1表示当前第三通信数据包中业务数据对应的待聚合的源头计算节点包括该比特位对应的计算节点,为0则表示不包括。例如,系统中共8个计算节点,计算节点0-7,第三通信数据包(INC聚合树生成上行数据包)的INC Header0中group_agg_status为(10000000)2,表示当前第三通信数据包对应源头计算节点为计算节点0;group_agg_status为(01000000)2,表示当前第三通信数据包对应源头计算节点为计算节点1。
一些示例性实施例中,网络设备本地的计算节点聚合信息,保存在本地的aggr_task_status_table表中,所述aggr_task_status_table包括N个比特位,对应N个计算节点;比特位为1表示当前第三通信数据包中业务数据对应的待聚合的源头计算节点包括该比特位对应的计算节点,为0则表示不包括。例如,系统中共8个计算节点,计算节点0-7,交换机本地的aggr_task_status_table内容为(11000000)2,表示当前交换对应的聚合树节点包括的源头计算节点为计算节点0和计算节点1;aggr_task_status_table为(11111111)2,表示当前交换对应的聚合树节点包括的源头计算节点为全部计算节点0-7。
一些示例性实施例中,所述INC Header0中还包括计算节点总数,用于指示当前集合通信系统中包括的计算节点总数。
一些示例性实施例中,所述INC Header0中的计算节点总数保存在INC Header0中的group-rank-number字段。例如,group-rank-number=8,表示当前集合通信系统中包括8个计算节点。
可以理解,INC聚合树生成上行/下行报文在集合通信系统中,用于进行聚合树生成,聚合树生成后,计算节点将根据生成的聚合树,触发集合通信系统中执行聚合任务的网络设备开始执行聚合任务,通信网络中的网络设备也将根据自身在聚合树中的拓扑结构具体执行卸载到本地的聚合任务。所述聚合树拓扑结构用于描述各级网络设备聚合任务执行过程的数据汇聚关系。聚合树生成后,在实际执行聚合任务时,各网络设备根据自身在所述聚合树的节点位置,完成对自身对应的源头计算节点的数据聚合后,逐级向上发送自身已完成的对源头计算节点的数据聚合结果,直到都汇聚到网络根设备,由网络根设备完成最终的聚合,得到完整的聚合结果。
需要说明的是,本公开实施例中,部分计算节点的聚合结果,是指在一轮聚合过程中,非网络根设备对自身对应的全部或部分源头计算节点的待聚合数据进行聚合,其结果为部分计算节点的聚合结果;网络根设备对全部源头计算节点的待聚合数据进行聚合,其结果为完整的聚合结果。
例如,图10所示聚合树的拓扑结构中,接入层交换机E0,E1各自完成部分数据聚合后,将聚合结果作为待聚合数据,上报汇聚层交换机A1;汇聚层交换机A1完成部分数据聚合后,将聚合结果作为待聚合数据,上报根交换机C2;……;根交换机接收到A1、A3和A5各自上报的待聚合数据后,进行数据聚合,得到完整的聚合结果。需要说明的是,图10、图15-图18所示网络中包括多个计算节点:N0-N15,以及交换机E0-E7,A0-A7和C0-C3;P0-P3为交换机上的网络通信端口。根据集合通信应用需要,选择部分或全部计算节点,以及部分或全部交换机建立集合通信系统,不限于本公开示例的具体方面。
一些示例性实施例中,所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合树生成下行数据包的情况下,所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包,包括:
将所述第三通信数据包作为所述第四通信数据包。
可以理解,在网络设备接收到INC聚合树生成下行数据包的情况下,第二INC引擎对接收到的数据包不进行特别处理,根据其本地的二/三层转发表确定路由后,进行转发。
可选地,一些示例性实施例中,所述INC标识不包括INC聚合树生成下行数据包的类型标识,则网络设备中第二数据收发模块不将INC聚合树生成下行数据包交由第二INC引擎处理,直接根据转发表进行数据包转发。
一些示例性实施例中,所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合任务上行数据包的情况下,所述第三通信数据包还包括符合第二格式的INC帧头,记为INC Header2;
所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存,包括:
根据所述INC Header2包括的计算节点聚合信息和所述网络设备本地的计算节点聚合信息,将所述第三通信数据包中的待聚合数据和所述网络设备本地缓存数据中的已聚合结果进行聚合后,更新所述网络设备本地缓存数据中的已聚合结果;
在确定所述网络设备已完成自身聚合任务的情况下,根据所述更新后的已聚合结果生成INC聚合任务上行数据包或者INC聚合任务下行数据包,作为所述第四通信数据包;
在确定所述网络设备未完成自身聚合任务的情况下,将所述第三通信数据包的非业务数据保存在所述网络设备本地,记为INC聚合任务上行缓存数据包头;
其中,所述INC Header2包括的计算节点聚合信息(group_agg_status)用于指示当前通信数据包对应的待聚合的源头计算节点;
所述网络设备本地的计算节点聚合信息(aggr_task_status_table)用于指示所述网络设备对应的聚合树节点包括的源头计算节点。
一些示例性实施例中,在根据所述网络设备本地的计算节点聚合信息,判定所述网络设备对应的聚合树节点包括的全部源头计算节点的待聚合数据已完成聚合的情况下,确定所述网络设备已完成自身聚合任务。
一些示例性实施例中,所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存,还包括:
更新所述网络设备本地缓存数据中的已聚合的源头计算节点信息。
例如,交换机本地的计算节点聚合信息保存在aggr_task_status_table表中,已聚合结果保存在aggr_result_cache_table表的result字段中,已聚合的源头计算节点信息(rank_id)保存在aggr_result_cache_table表的rank_id字段,包括N个比特位,对应N个计算节点;1表示该比特位对应的源头计算节点的数据已在当前交换机被聚合,0则表示尚未聚合。
其中aggr_task_status_table为(11000000)2,rank_id为(10000000)2,则确定该交换机未完成本地聚合任务;如果rank_id为(11000000)2,则确定该交换机已完成本地聚合任务。
需要说明的是,本公开实施例中针对各项信息在网络设备本地或INC帧头中数据的具体形式进行了示例,但并不限定只可采用该形式,本领域技术人员根据本公开记载的示例,可以采用其他等效方式实现,以达成一致的技术目标,不限于特定的方面。
可以看到,根据本公开实施例记载的方案,执行在网计算的网络设备,在处理INC聚合任务上行数据包时,只在完成本设备所需聚合的全部源头节点的数据聚合后,才进一步向上一级网络设备上发包含自身全部聚合结果的INC聚合任务上行数据包,或向下一级网络设备返回INC聚合任务下行数据包;而在未完成自身所需聚合的全部源头节点的数据聚合时,缓存中间的聚合结果并记录已缓存聚合结果对应的源头计算节点信息。由此,可以有效避免大量中间状态的数据被送达网络根设备,既降低了网络流量,也减轻了网络根设备的负载。
同时,在未完成自身聚合任务的情况下,对已收到的第三通信数据包(INC聚合任务上行数据包),暂时不输出第四通信数据包时,网络设备除了缓存已聚合得到的(部分)聚合结果外,还缓存这些第三通信数据包的非业务数据,记为INC聚合任务上行缓存数据包头。一些示例性实施例中,缓存这些第三通信数据包中部分或全部非业务数据,这些缓存数据用于在所述网络设备接收到网络根设备返回的INC聚合任务下行数据包后,对应生成返回的INC聚合任务下行数据包。
一些示例性实施例中,所述根据所述更新后的已聚合结果生成INC聚合任务上行数据包或者INC聚合任务下行数据包,包括:
在所述网络设备不是集合通信系统所设定的网络根设备的情况下,根据所述更新后的已聚合结果更新所述第三通信数据包中的待聚合数据,以及将所述INC Header2包括的计算节点聚合信息(group_agg_status)更新为所述更新后的已聚合结果对应的源头计算节点,得到所述INC聚合任务上行数据包;
在所述网络设备是集合通信系统所设定的网络根设备的情况下,根据所述更新后的已聚合结果更新所述第三通信数据包中的待聚合数据,以及将所述第三通信数据包中所述INC Header2中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换,将所述INC Header2包括的计算节点聚合信息(group_agg_status)更新为所述更新后的已聚合结果对应的源头计算节点,得到所述INC聚合任务下行数据包。
可以看到,当前网络设备在已完成自身聚合任务且自身不是网络根设备的情况下,表明当前网络设备还需要继续上报自身的聚合结果到上一级网络设备,则需要更新上发给上一级网络设备的INC聚合任务上行数据包的INC Header2中的计算节点聚合信息,已体现该INC聚合任务上行数据包中包括的待聚合数据对应哪些源头计算节点。
当前网络设备在已完成自身聚合任务且自身是网络根设备的情况下,表明当前网络设备已接收到所述集合通信系统中全部计算节点的数据,可以得到完整的聚合结果,可以生成INC聚合任务下行数据包,以把完整的聚合结果通知到下游网络设备和各计算节点,INC聚合任务下行数据包的INC Header2中的计算节点聚合信息,体现该INC聚合任务下行数据包中的聚合结果是对应全部源头结算节点的完整聚合结果。
一些示例性实施例中,所述根据所述更新后的已聚合结果生成INC聚合任务上行数据包或者INC聚合任务下行数据包,还包括:
在所述网络设备是集合通信系统所设定的网络根设备的情况下,获取所述网络设备本地的INC聚合任务上行缓存数据包头;
针对每一个INC聚合任务上行缓存数据包头,根据所述更新后的已聚合结果,分别生成对应的INC聚合任务下行数据包;
将每一个所述INC聚合任务下行数据包中的INC Header2包括的计算节点聚合信息更新为所述更新后的已聚合结果对应的源头计算节点;
将每一个所述INC聚合任务下行数据包中所述INC Header2中的目的IP缓存字段值和该INC聚合任务下行数据包中IP包头中的目的IP地址字段值进行交换。
可以看到,当前网络设备在已完成自身聚合任务且自身是网络根设备的情况下,根据本地缓存的INC聚合任务上行缓存数据包头,分别对应生成INC聚合任务下行数据包,用以对这些缓存的INC聚合任务上行数据包进行响应。
例如,根交换机本地的aggr_task_status_table内容为(11111111)2,表示根交换对应的聚合树节点包括的源头计算节点为计算节点0-7,在接收到INC聚合任务上行数据包1,其INC Header2中group_agg_status为(11110000)2,INC聚合任务上行数据包2,其INCHeader2中group_agg_status为(00001100)2后,根交换机进行数据聚合,得到的聚合结果对应的源头计算节点为计算节点0-5,缓存该聚合结果1、INC聚合任务上行缓存数据包头(包括:INC聚合任务上行数据包1和INC聚合任务上行数据包2的非业务数据),此时,未完成自身聚合任务,不生成INC聚合任务下行缓存数据包;在接收到INC聚合任务上行数据包3,其INC Header2的group_agg_status为(00000011)2,根据INC聚合任务上行数据包3中的业务数据(待聚合数据)和本地保存的聚合结果1,进行聚合,得到聚合结果2。此时,根节点确定已完成自身聚合任务,即聚合结果2就是8个源头计算节点对应的完整的聚合结果,根交换机生成INC聚合任务下行数据包3,根据交换IP地址后的经由聚合树中的下级交换机,送达目的IP地址。以及,针对已缓存的INC聚合任务上行数据包1和INC聚合任务上行数据包2的数据包头,分别生成对应的INC聚合任务下行数据包1和INC聚合任务下行数据包2,交换IP地址后的经由聚合树中的下级交换机,送达目的IP地址。由此,根交换机接收到了3个INC聚合任务上行数据包,也对应下发了3个INC聚合任务下行数据包,只是下发响应下行数据包的时机有所不同,这3个INC聚合任务下行数据包中的聚合结果都是8个计算节点对应的完整的聚合结果,其INC Header2包括的计算节点聚合信息group_agg_status均为(11111111)2
一些示例性实施例中,所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合任务下行数据包的情况下,所述第三通信数据包还包括符合第二格式的INC帧头,记为INC Header2;
所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包,包括:
根据所述网络设备本地保存的INC聚合任务上行缓存数据包头和所述第三通信数据包,获得至少一个INC聚合任务下行数据包,作为所述第四通信数据包。
一些示例性实施例中,所述至少一个INC聚合任务下行数据包包括所述第三通信数据包和新的INC聚合任务下行数据包;
其中,所述新的INC聚合任务下行数据包根据以下方式生成:
获取所述网络设备本地的INC聚合任务上行缓存数据包头;
针对每一个INC聚合任务上行缓存数据包头,根据所述第三通信数据包,分别生成对应的新的INC聚合任务下行数据包;
将每一个所述新的INC聚合任务下行数据包中所述INC Header2中的目的IP缓存字段值和该新的INC聚合任务下行数据包中IP包头中的目的IP地址字段值进行交换。
其中,针对每一个INC聚合任务上行缓存数据包头,根据所述第三通信数据包,分别生成对应的新的INC聚合任务下行数据包,包括:
针对每一个INC聚合任务上行缓存数据包头,分别以所述第三通信数据包中的已聚合结果作为业务数据,得到初始INC聚合任务下行数据包;
将各初始INC聚合任务下行数据包的INC Header2包括的计算节点聚合信息更新为所述第三通信数据包的INC Header2包括的计算节点聚合信息,得到所述新的INC聚合任务下行数据包。
可以理解,交换机网络中的非根交换机将接收到INC聚合任务下行数据包,由于这些非根交换机执行了自身的聚合任务,只上送了已聚合的结果到上级交换机,而得到自身的聚合结果是依据自身对应的源头计算节点的待聚合数据直接或间接得到的,基于INC聚合任务下行数据包和INC聚合任务上行数据包的对应关系,该交换机以接收到的来自上级交换机的INC聚合任务下行数据包作为自身将要下发的一个INC聚合任务下行数据包,以及根据已缓存的INC聚合任务上行缓存数据包头,再生成其他对应的INC聚合任务下行数据包,最终下发的INC聚合任务下行数据包的数量与自身接收到的INC聚合任务上行数据包的数量一致。
本公开实施例提供的集合通信方案,基于已建立的聚合树进行执行聚合任务时,相比于生成聚合树的相关数据包,在聚合任务执行中进行了数据包流量精简,每两个节点之间的上行和下行流量都只有一个报文:
聚合树任意两个交换机节点之间的上下行报文各只有一个;
聚合树任意计算节点和交换机节点之间的上下行报文各只有一个。
聚合任务执行中实现数据流量的精简是通过交换机本地的计算节点聚合信息和缓存的INC聚合任务上行缓存数据包头实现的。
可以理解,交换机网络中的非根交换机根据INC聚合任务上行缓存数据包头生成新的INC聚合任务下行数据包后,也执行了IP交换,使得该新生成的INC聚合任务下行数据包可以根据计算节点的上层应用功能模块下发的最初始的INC聚合任务上行数据包中的目的IP地址被送达目的计算节点。
根据本公开实施例提供的集合通信方案,基于INC标识,利用新引入的第一/第二INC引擎独立并行于网卡或网络设备已有的一般性数据包收发逻辑进行集合通信相关操作,显著提升了结合在网计算方案的集合通信系统的运行效率。一些示例性实施例中,明确了各类型集合通信数据包的处理流程,提供了完整的可实施方案,避免了中间数据在网络上的不必要传输,是适用于多种复杂的、多层次的以太网环境的高效集合通信方案。
本公开实施例还提供一种网卡1100,如图11所示,包括,
第一数据收发模块1110和第一在网计算INC引擎1120;
所述第一数据收发模块1110设置为,接收第一通信数据包;
根据所述第一通信数据包中包含的在网计算INC标识,将所述第一通信数据包发送到所述第一INC引擎1120;所述INC标识用于指示第一通信数据包为集合通信数据包;
所述第一INC引擎1120,设置为根据所述第一通信数据包对应的集合通信数据包类型,对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;
所述第一数据收发模块1110还设置为,发送所述至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点的上层业务功能模块。
一些示例性实施例中,所述第一数据收发模块1110包括RDMA逻辑单元。
一些示例性实施例中,所述网卡为RDMA网络接口控制器(Rdma NetworkInterface Controller,RNIC)。
本公开实施例还提供一种计算节点,包括如本公开任一实施例所述的网卡1100。
一些示例性实施例中,所述计算节点如图12所示,包括一个或多个RNIC;所述RNIC中包括RDMA逻辑单元(RDMA Logic)和INC引擎(INC Engine)。
一些示例性实施例中,所述计算节点还包括:CPU和PCIe交换机(peripheralcomponent interconnect express switch,高速串行计算机扩展总线)。
本公开实施例还提供一种网络设备1300,如图13所示,包括,
第二数据收发模块1310和第二在网计算INC引擎1320;
所述第二数据收发模块1310设置为,接收第三通信数据包;根据所述第三通信数据包中包含的在网计算INC标识,将所述第三通信数据包发送到所述第二INC引擎1320;所述INC标识用于指示第三通信数据包为集合通信数据包;
所述第二INC引擎1320设置为,根据所述第三通信数据包对应的集合通信数据包类型,对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存;
所述第二数据收发模块1310还设置为,在所述第四通信数据包不为空的情况下,发送所述第四通信数据包到所述集合通信系统中的通信网络或计算节点。
一些示例性实施例中,所述第二INC引擎1320包括第二算数逻辑单元ALU;所述第二ALU用于执行数据聚合任务。
一些示例性实施例中,所述网络设备1300为交换机。
本公开实施例还提供一种集合通信系统1400,如图14所示,包括,
多个如本公开任一实施例所述的计算节点1410和至少一个如本公开任一实施例所述的网络设备1420。
需要说明的是,集合通信系统中可以建立一个或多个集合通信域,本公开中以一个集合通信域为例记载实施例。在无特别说明的情况下,本公开所述的集合通信系统和集合通信域为等同概念。
本公开实施例还提供一种集合通信系统,如图15和图16所示,包括8个计算节点N0,N1,N2,N3,N4,N6,N7和N8,对应的节点标识为:inc_rank0-inc_rank7,构建一个了一个集合通信域INC_COMM A。构建的集合通信域INC_COMM A时,也完成了相邻计算节点之间的Socket、RDMA建链,使得计算节点之间形成一个逻辑上的环状连接(Flat ring):inc_rank0->inc_rank1->inc_rank2->inc_rank3->inc_rank4->inc_rank5->inc_rank6->inc_rank7。每两个inc_rank间建立一条Socket连接和至少一条支持INC的QP(Queue Pair);Socket连接用于两个inc_rank进行RDMA建链所需信息交互,RDMA建链是为了后续各节点收发集合通信数据包,以进行聚合树生成、执行聚合任务。其他,计算节点N5,N9,N10,N11,N12,N13,N14,N15未包括在该集合通信系统中。
聚合树生成过程包括:
inc_rank0(N0)向inc_rank1(N1)发送INC聚合树生成上行数据包:
主机N0-inc_rank0向inc_rank1(N1)发送INC聚合树生成上行数据包(INCHeader0);其中,主机N0的第一INC引擎进行IP交换,交换后的INC聚合树生成上行数据包的目的IP地址变换为根交换机IP地址,由于目的IP地址和N0本地IP非同一个子网,该报文发送给N0的网关——边缘交换机E0;INC Header0中计算节点聚合信息group_agg_status为(10000000)2
一些示例性实施例中,对RDMA协议进行适配性改动,在标准的RDMA协议基础上,新增了INC QP(Queue Pair)类型:IBV_QPT_RC_INC_GEN_TREE和IBV_QPT_RC_INC_AGGR,用于告知其网卡发送的是集合通信数据包;其中,IBV_QPT_RC_INC_GEN_TREE用于INC聚合树生成的RDMA发送/接收,IBV_QPT_RC_INC_AGGR用于聚合任务的RDMA发送/接收。主机N0中的上层业务功能模块调用ibv_create_qp创建qp时,指定上述INC QP类型——IBV_QPT_RC_INC_GEN_TREE;主机N0上的网卡驱动将INC_WR转换成INC_Work Queue Elements(WQE),并放置到Send Queue中,网卡在所创建的QP上处理该WQE。可以看到主机N0上的网卡,在该QP上接收到包含相应INC标识的通信数据包时,将交由第一INC引擎进行数据包编辑,包括:进行IP交换。
交换机E0接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:创建并更新本地计算节点聚合信息aggr_task_status_table为(10000000)2
交换机E0查找本地路由表,发送INC聚合树生成上行数据包(INC Header0)到交换机A1,以使得数据包最终能够到达根交换机。
交换机A1接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:创建并更新本地计算节点聚合信息aggr_task_status_table为(10000000)2
交换机A1查找本地路由表,发送INC聚合树生成上行数据包(INC Header0)到交换机C2。
交换机C2接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:创建并更新本地计算节点聚合信息aggr_task_status_table为(10000000)2;根据INC聚合树生成上行数据包(INC Header0)生成INC聚合树生成下行数据包(INC Header0),交换IP,目的IP地址变换为inc_rank1(节点N1)的IP地址,其中INCHeader0中计算节点聚合信息group_agg_status为(10000000)2;其中,交换机C2接收到的INC聚合树生成上行数据包的IP包头中的IP地址与交换机C2本身IP地址一致,故交换机C2确定自身为根交换机,进而执行所述INC聚合树生成下行数据包(INC Header0)生成和交换IP的步骤;
交换机C2查找本地路由表,确定只有将数据包转发至A1才能到达N1,发送INC聚合树生成下行数据包(INC Header0)到交换机A1。
交换机A1接收到INC聚合树生成下行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:识别出是下行数据包,无特别处理,交由交换机A1的第二数据收发模块执行转发;
交换机A1查找本地路由表,发送INC聚合树生成下行数据包(INC Header0)到交换机E0。
交换机E0接收到INC聚合树生成下行数据包(INC Header0),根据INC标识交由其第二INC引擎处理,包括:识别出是下行数据包,无特别处理,交由交换机E0的第二数据收发模块执行转发;
交换机E0判断目的IP地址处于本交换机的子网,查二层转发表后,发送INC聚合树生成下行数据包(INC Header0)到inc_rank1(节点N1)。
inc_rank1(N1)向inc_rank2(N2)发送INC聚合树生成上行数据包:
主机N1-inc_rank1向inc_rank2(N2)发送INC聚合树生成上行数据包(INCHeader0);其中,主机N1的第一INC引擎进行IP交换,交换后的INC聚合树生成上行数据包的目的IP地址变换为根交换机IP地址,由于目的IP地址和N1本地IP非同一个子网,该报文发送给N1的网关——边缘交换机E0;INC Header0中计算节点聚合信息group_agg_status为(01000000)2
交换机E0接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:更新本地计算节点聚合信息aggr_task_status_table为(11000000)2,即根据group_agg_status 01000000和本地缓存的aggr_task_status_table(10000000)2按位“或”得到新的aggr_task_status_table(11000000)2更新本地aggr_task_status_table;
交换机E0查找本地路由表,发送INC聚合树生成上行数据包(INC Header0)到交换机A1,以使得数据包最终能够到达根交换机;
交换机A1接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:更新本地计算节点聚合信息aggr_task_status_table为(11000000)2
交换机A1查找本地路由表,发送INC聚合树生成上行数据包(INC Header0)到交换机C2;
交换机C2接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:更新本地计算节点聚合信息aggr_task_status_table为(11000000)2;根据INC聚合树生成上行数据包(INC Header0)生成INC聚合树生成下行数据包(INC Header0),交换IP,目的IP地址变换为inc_rank2(节点N2)的IP地址,其中INCHeader0中计算节点聚合信息group_agg_status为(11000000)2
交换机C2查找本地路由表,确定只有将数据包转发至A1才能到达N2,发送INC聚合树生成下行数据包(INC Header0)到交换机A1;
交换机A1接收到INC聚合树生成下行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:识别出是下行数据包,无特别处理,交由交换机A1的第二数据收发模块执行转发;
交换机A1查找本地路由表,发送INC聚合树生成下行数据包(INC Header0)到交换机E1;
交换机E1接收到INC聚合树生成下行数据包(INC Header0),根据INC标识交由其第二INC引擎处理,包括:识别出是下行数据包,无特别处理,交由交换机E1的第二数据收发模块执行转发;
交换机E1判断目的IP地址处于本交换机的子网,查二层转发表后,发送INC聚合树生成下行数据包(INC Header0)到inc_rank2(节点N2)。
inc_rank2(N2)向inc_rank3(N3)发送INC聚合树生成上行数据包(细节略);
inc_rank3(N3)向inc_rank4(N4)发送INC聚合树生成上行数据包(细节略);
inc_rank4(N4)向inc_rank5(N6)发送INC聚合树生成上行数据包(细节略);
inc_rank5(N6)向inc_rank6(N7)发送INC聚合树生成上行数据包(细节略);
inc_rank6(N7)向inc_rank7(N8)发送INC聚合树生成上行数据包(细节略);
inc_rank7(N8)向inc_rank0(N0)发送INC聚合树生成上行数据包:
主机N8-inc_rank7向inc_rank0(N0)发送INC聚合树生成上行数据包(INCHeader0);其中,主机N8的第一INC引擎进行IP交换,交换后的INC聚合树生成上行数据包的目的IP地址变换为根交换机IP地址,由于目的IP地址和N8本地IP非同一个子网,该报文发送给N8的网关——边缘交换机E4;INC Header0中计算节点聚合信息group_agg_status为(00000001)2
交换机E4接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:创建并更新本地计算节点聚合信息aggr_task_status_table为(00000001)2
交换机E4查找本地路由表,发送INC聚合树生成上行数据包(INC Header0)到交换机A5,以使得数据包最终能够到达根交换机;
交换机A5接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:创建并更新本地计算节点聚合信息aggr_task_status_table为(00000001)2
交换机A5查找本地路由表,发送INC聚合树生成上行数据包(INC Header0)到交换机C2;
交换机C2接收到INC聚合树生成上行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:更新本地计算节点聚合信息aggr_task_status_table为(11111111)2,即根据INC Header0中group_agg_status 00000001和本地缓存的aggr_task_status_table(11111110)2按位“或”得到新的aggr_task_status_table(11111111)2更新本地aggr_task_status_table;根据INC聚合树生成上行数据包(INC Header0)生成INC聚合树生成下行数据包(INC Header0),交换IP,目的IP地址变换为inc_rank0(节点N0)的IP地址,其中INC Header0中计算节点聚合信息group_agg_status为(11111111)2
交换机C2查找本地路由表,确定只有将数据包转发至A1才能到达N0,发送INC聚合树生成下行数据包(INC Header0)到交换机A1;
交换机A1接收到INC聚合树生成下行数据包(INC Header0),根据INC标识交由其第二INC引擎处理;包括:识别出是下行数据包,无特别处理,交由交换机A1的第二数据收发模块执行转发;
交换机A1查找本地路由表,发送INC聚合树生成下行数据包(INC Header0)到交换机E0;
交换机E0接收到INC聚合树生成下行数据包(INC Header0),根据INC标识交由其第二INC引擎处理,包括:识别出是下行数据包,无特别处理,交由交换机E0的第二数据收发模块执行转发;
交换机E0判断目的IP地址处于本交换机的子网,查二层转发表后,发送INC聚合树生成下行数据包(INC Header0)到inc_rank0(节点N0)。
可以看到,经过上述8个节点发送INC聚合树生成上行数据包后,最后一个被根交换机C2处理后生成的INC聚合树生成下行数据包的INC Header0中计算节点聚合信息group_agg_status为(11111111)2,该数据包被计算节点收到,并通知所述集合通信系统(通信域)的所有计算节点,聚合树生成完毕。
对于交换机网络而言,形成了如图10所示的聚合树。
本公开实施例还提供一种集合通信系统,如图17和图18所示,包括8个计算节点N0,N1,N2,N3,N4,N6,N7和N8,对应的节点标识为:inc_rank0-inc_rank7,构建了一个集合通信域INC_COMM A。
聚合任务执行过程包括:
inc_rank0(N0)向inc_rank1(N1)发送INC聚合任务上行数据包:
主机N0-inc_rank0向inc_rank1(N1)发送INC聚合任务上行数据包1(INCHeader1);其中,主机N0的第一INC引擎执行Message分片重封装得到一个或多个INC聚合任务上行数据包(INC Header2);主机N0的第一INC引擎进行IP交换,交换后的INC聚合任务上行数据包的目的IP地址变换为根交换机IP地址,由于目的IP地址和N0本地IP非同一个子网,该报文发送给N0的网关——边缘交换机E0;INC Header2中计算节点聚合信息group_agg_status为(10000000)2
交换机E0接收到INC聚合任务上行数据包1(INC Header2,group_agg_status为(10000000)2),根据INC标识交由其第二INC引擎处理;包括:根据本地缓存的已聚合源头节点信息(00000000)2和已聚合结果为空,缓存INC聚合任务上行数据包1(INC Header2,group_agg_status为(10000000)2)的非业务数据(记为INC聚合任务上行缓存数据包头),更新本地缓存的已聚合源头节点信息为(10000000)2,更新已聚合结果为INC聚合任务上行数据包1中的待聚合数据;根据已聚合源头节点信息(10000000)2和本地计算节点聚合信息aggr_task_status_table(11000000)2不一致,确定未完成自身的聚合任务;E0继续等待后续数据包;
inc_rank1(N1)向inc_rank2(N2)发送INC聚合任务上行数据包:
主机N1-inc_rank1向inc_rank2(N2)发送INC聚合任务上行数据包2(INCHeader1);其中,主机N1的第一INC引擎执行Message分片重封装得到一个或多个INC聚合任务上行数据包(INC Header2);主机N1的第一INC引擎进行IP交换,交换后的INC聚合任务上行数据包的目的IP地址变换为根交换机IP地址,由于目的IP地址和N0本地IP非同一个子网,该报文发送给N0的网关——边缘交换机E0;INC Header2中计算节点聚合信息group_agg_status为(01000000)2
交换机E0接收到INC聚合任务上行数据包2(INC Header2),根据INC标识交由其第二INC引擎处理;包括:根据本地缓存的已聚合源头节点信息10000000和本地计算节点聚合信息aggr_task_status_table(11000000)2,将INC聚合任务上行数据包中的待聚合数据和本地保存的已聚合结果进行聚合,得到新的已聚合结果;更新本地缓存的已聚合源头节点信息为(11000000)2;根据已聚合源头节点信息(11000000)2和本地计算节点聚合信息aggr_task_status_table(11000000)2一致,确定已完成自身的聚合任务;E0不是根交换机,生成INC聚合任务上行数据包3(INC Header2),其中INC Header2中计算节点聚合信息group_agg_status为(11000000)2,待聚合数据为所述新的聚合结果;可以理解,E0生成的INC聚合任务上行数据包3(INC Header2)中的待聚合数据是针对源头计算节点inc_rank0和inc_rank1的聚合结果,属于部分源头数据的聚合结果;其中,交换机E0接收到的INC聚合任务上行数据包2的IP包头中的IP地址与交换机E0本身IP地址不一致,故交换机E0确定自身为非根交换机;
交换机E0根据INC Header2中的目的IP地址(根交换机IP地址),查询转发表后,将生成的INC聚合任务上行数据包3(INC Header2)转发到交换机A1。
可以看到,交换机E0针对接收到的N0-inc_rank0向inc_rank1(N1)的INC聚合任务上行数据包1进行了INC聚合任务上行数据包头本地缓存,未输出上报或下发的第四通信数据包;针对接收到的N1-inc_rank1向inc_rank2(N2)的INC聚合任务上行数据包2进行了数据聚合,并输出了上报的第四通信数据包(INC聚合任务上行数据包3)。
交换机A1执行与E0的相似逻辑步骤,A1在接收到E0上报的INC聚合任务上行数据包3(INC Header2,group_agg_status为(11000000)2)时,根据其本地的计算节点聚合信息aggr_task_status_table(11110000)2和已聚合源头节点信息(00000000)2,确定未收全自身对应的全部源头计算节点的待聚合数据,缓存自身接收到的INC聚合任务上行数据包3的非业务数据(记为INC聚合任务上行缓存数据包头),更新本地缓存的已聚合源头节点信息为(11000000)2,更新已聚合结果为INC聚合任务上行数据包3中的待聚合数据;根据已聚合源头节点信息(11000000)2和本地计算节点聚合信息aggr_task_status_table(11110000)20不一致,确定未完成自身的聚合任务;A1继续等待后续数据包。
inc_rank2(N2)向inc_rank3(N3)发送INC聚合任务上行数据包4:
交换机E1缓存INC聚合任务上行数据包4的非业务数据(记为INC聚合任务上行缓存数据包头),更新本地缓存的已聚合源头节点信息和已聚合结果。
inc_rank3(N3)向inc_rank4(N4)发送INC聚合任务上行数据包5:
交换机E1根据INC聚合任务上行数据包5,完成对已聚合结果和INC聚合任务上行数据包5中待聚合数据的聚合,更新本地缓存的已聚合源头节点信息和已聚合结果;根据本地计算节点聚合信息aggr_task_status_table(00110000)2,确定已完成自身聚合任务,生成INC聚合任务上行数据包6(INC Header2,group_agg_status为(00110000)2),上发交换机A1;
当A1在接收到E1上报的INC聚合任务上行数据包6(INC Header2,group_agg_status为(00110000)2)时,根据其本地的计算节点聚合信息aggr_task_status_table(11110000)2和已聚合源头节点信息(11000000)2,确定收全自身对应的全部源头计算节点的待聚合数据,将INC聚合任务上行数据包中的待聚合数据和本地保存的已聚合结果进行聚合,得到新的已聚合结果;更新本地缓存的已聚合源头节点信息为(11110000)2;根据已聚合源头节点信息(11110000)2和本地计算节点聚合信息aggr_task_status_table(11110000)2一致,确定已完成自身的聚合任务;A1不是根交换机,生成INC聚合任务上行数据包7(INC Header2),其中INC Header2中计算节点聚合信息group_agg_status为(11110000)2,待聚合数据为所述新的聚合结果;可以理解,A1生成的INC聚合任务上行数据包7(INC Header2)中的待聚合数据是针对源头计算节点inc_rank0、inc_rank1、inc_rank2和inc_rank3的聚合结果,属于部分源头数据的聚合结果;
交换机A1根据INC聚合任务上行数据包7的INC Header2中的目的IP地址(根交换机),查询转发表后,将生成的INC聚合任务上行数据包7(INC Header2)转发到交换机C2。
inc_rank4(N4)向inc_rank5(N6)发送INC聚合任务上行数据包8(细节略);
inc_rank5(N6)向inc_rank6(N7)发送INC聚合任务上行数据包9(细节略);
inc_rank6(N7)向inc_rank7(N8)发送INC聚合任务上行数据包10(细节略);
inc_rank7(N8)向inc_rank0(N0)发送INC聚合任务上行数据包11(部分细节略):
根交换机C2,分别从A1、A3、A5接收到与源头inc_rank3(N3)—>inc_rank4(N4)对应的INC聚合任务上行数据包7,inc_rank6(N7)—>inc_rank7(N8)INC聚合任务上行数据包12,inc_rank7(N8)—>inc_rank0(N0)INC聚合任务上行数据包13。
其中,缓存INC聚合任务上行数据包7和INC聚合任务上行数据包12的非业务数据(记为INC聚合任务上行缓存数据包头);
根交换机C2在处理INC聚合任务上行数据包13时,确定已完成自身聚合任务,且为根交换机,则生成INC聚合任务下行数据包1(INC Header2,group_agg_status为(11111111)2),其中业务数据为全部8个计算节点数据的完整的聚合结果;进行IP交换,目的IP地址更换为inc_rank0(N0)的IP地址;其中,交换机C2接收到的INC聚合任务上行数据包13的IP包头中的IP地址与交换机C2本身IP地址一致,故交换机C2确定自身为根交换机,进而执行所述INC聚合任务下行数据包1(INC Header2)生成和交换IP的步骤。
根交换机C2根据本地保存的INC聚合任务上行缓存数据包头,对应生成生成INC聚合任务下行数据包2(INC Header2,group_agg_status为(11111111)2)和生成INC聚合任务下行数据包3(INC Header2,group_agg_status为(11111111)2),其交换后的目的IP地址为inc_rank7(N8)的IP地址和inc_rank4(N4)的IP地址。
根交换机C2下发INC聚合任务下行数据包1到A1,下发INC聚合任务下行数据包2到A3,下发INC聚合任务下行数据包3到A5;
交换机A1接收到INC聚合任务下行数据包1(INC Header2,group_agg_status为(11111111)2),目的IP地址为inc_rank0(N0)的IP地址,查询转发表发送到交换机E0;
交换机A1根据本地保存的INC聚合任务上行缓存数据包头,对应生成生成INC聚合任务下行数据包4(INC Header2,group_agg_status为(11111111)2),交换IP后目的IP地址为inc_rank2(N2)的IP地址,查询转发表发送到交换机E1;
交换机E0接收来自A1的INC聚合任务下行数据包1(INC Header2,group_agg_status为(11111111)2),目的IP地址为inc_rank0(N0),根据二层转发信息,发送到计算节点N0;
交换机E0根据本地保存的INC聚合任务上行缓存数据包头,对应生成生成INC聚合任务下行数据包5(INC Header2,group_agg_status为(11111111)2),交换IP后目的IP地址为inc_rank1(N1)的IP地址,根据二层转发信息,发送到计算节点N1;
交换机E1接收来自A1的INC聚合任务下行数据包4(INC Header2,group_agg_status为(11111111)2),目的IP地址为inc_rank2(N2),根据二层转发信息,发送到计算节点N2;
交换机E1根据本地保存的INC聚合任务上行缓存数据包头,对应生成生成INC聚合任务下行数据包6(INC Header2,group_agg_status为(11111111)2),交换IP后目的IP地址为inc_rank3(N3)的IP地址,根据二层转发信息,发送到计算节点N3;
交换机A5,接收到来自C2的INC聚合任务下行数据包2,目的IP地址为inc_rank7(N8)的IP地址,查询转发表发送到交换机E4;
交换机A5没有本地保存的INC聚合任务上行缓存数据包头;
交换机E4接收来自A5的INC聚合任务下行数据包2(INC Header2,group_agg_status为(11111111)2),目的IP地址为inc_rank7(N8),根据二层转发信息,发送到计算节点N8;
交换机E4没有本地保存的INC聚合任务上行缓存数据包头;
交换机A3,接收到来自C2的INC聚合任务下行数据包3,目的IP地址为inc_rank4(N4)的IP地址,查询转发表发送到交换机E2;
交换机A3根据本地保存的INC聚合任务上行缓存数据包头,对应生成生成INC聚合任务下行数据包7(INC Header2,group_agg_status为(11111111)2),交换IP后目的IP地址为inc_rank5(N6)的IP地址,查询转发表发送到交换机E3;
交换机E2接收来自A3的INC聚合任务下行数据包3(INC Header2,group_agg_status为(11111111)2),目的IP地址为inc_rank4(N4),根据二层转发信息,发送到计算节点N4;
交换机E2没有本地保存的INC聚合任务上行缓存数据包头;
交换机E3接收来自A3的INC聚合任务下行数据包7(INC Header2,group_agg_status为(11111111)2),目的IP地址为inc_rank5(N6),根据二层转发信息,发送到计算节点N6;
交换机E3根据本地保存的INC聚合任务上行缓存数据包头,对应生成生成INC聚合任务下行数据包8(INC Header2,group_agg_status为(11111111)2),交换IP后目的IP地址为inc_rank6(N7)的IP地址,根据二层转发信息,发送到计算节点N7。
可以看到,在聚合任务执行过程中,每一个计算节点上发了一个INC聚合任务上行数据包,也对应接收到了一个INC聚合任务下行数据包。交换机节点之间也没有重复地发送冗余的业务数据。
本公开实施例还提供一种电子设备,包括,
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本公开任一实施例所述的集合通信方法。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开任一实施例所述的集合通信方法。
本公开实施例提供的集合通信方案,在计算节点的网卡和/或交换机硬件中引入专用的INC引擎硬件模块,根据集合通信数据包中的INC标识,由专用的INC引擎进行数据包处理以实现集合操作的INC卸载,优化了网卡和/或交换机的通信数据包的处理流程,提升了处理效率,以满足大规模组网和日益复杂的集合通信系统的性能需求。一些示例性实施中,基于提出的数据包头缓存和各级交换机的数据聚合策略,显著精简了聚合任务执行过程中通信网络中的数据流量。专用INC引擎中执行IP交换步骤,在不影响上层应用功能模块提交的数据发送请求的前提下,实现了聚合树生成以及聚合任务在多层级网络设备上的计算卸载。本公开实施例提供的集合通信方案,能够适用于多层次的复杂网络结构,满足网络设备/网卡高性能并行计算的需要,能够进一步有效推动HPC以及AI技术发展应用。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

Claims (12)

1.一种集合通信方法,应用于计算节点所包括的网卡,其特征在于,
所述方法包括,
接收第一通信数据包;
根据所述第一通信数据包中包含的在网计算INC标识,将所述第一通信数据包发送到所述网卡包括的第一INC引擎;所述INC标识用于指示第一通信数据包为集合通信数据包;
根据所述第一通信数据包对应的集合通信数据包类型,所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;
发送所述至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点的上层业务功能模块。
2.如权利要求1所述的方法,其特征在于,
所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包;
所述第一通信数据包包括IP包头;
在所述第一通信数据包为INC聚合树生成上行数据包的情况下,所述第一通信数据包还包括符合第零格式的INC帧头,记为INC Header0;
所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包,包括:
将所述第一通信数据包中所述INC Header0中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换后,得到所述第二通信数据包。
3.如权利要求1所述的方法,其特征在于,
所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包;
所述第一通信数据包包括IP包头;
在所述第一通信数据包为INC聚合任务上行数据包的情况下,所述第一通信数据包还包括符合第一格式的INC帧头,记为INC Header1;
所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包,包括:
将所述第一通信数据包中的待聚合数据,根据设定的分片大小,划分为M个待聚合数据分片,M为大于0的整数;
将所述第一通信数据包中所述INC Header1中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换;
根据交换后的所述INC Header1,转换得到M个符合第二格式的INC帧头,记为INCHeader2;
根据交换后的所述IP包头、M个INC Header2和所述M个待聚合数据分片,重新封装得到M个INC聚合任务上行数据包为所述至少一个第二通信数据包。
4.如权利要求1所述的方法,其特征在于,
所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包;
所述第一通信数据包包括IP包头;
所述第一通信数据包包括一个或多个;
在所述第一通信数据包为INC聚合任务下行数据包的情况下,所述第一通信数据包还包括符合第二格式的INC帧头,记为INC Header2;
所述第一INC引擎对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包,包括:
根据所述一个或多个第一通信数据包对应的INC Header2,和设定的分片大小,将所述一个或多个第一通信数据包中的聚合结果数据合并为完整的聚合结果数据;
根据所述IP包头和所述完整的聚合结果数据,重新封装得到一个IP数据包作为所述至少一个第二通信数据包。
5.一种集合通信方法,应用于集合通信系统所包括的网络设备,其特征在于,所述方法包括,
接收第三通信数据包;
根据所述第三通信数据包中包含的在网计算INC标识,将所述第三通信数据包发送到所述网络设备包括的第二INC引擎;所述INC标识用于指示第三通信数据包为集合通信数据包;
根据所述第三通信数据包对应的集合通信数据包类型,所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存;
在所述第四通信数据包不为空的情况下,发送所述第四通信数据包到所述集合通信系统中的通信网络或计算节点。
6.如权利要求5所述的方法,其特征在于,
所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包;
所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合树生成上行数据包的情况下,所述第三通信数据包还包括符合第零格式的INC帧头,记为INC Header0;
所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包,包括:
根据所述第三通信数据包中的INC Header0包括的计算节点聚合信息,更新所述网络设备本地的计算节点聚合信息;
在所述网络设备不是集合通信系统所设定的网络根设备的情况下,根据更新后的所述网络设备本地的计算节点聚合信息,更新所述第三通信数据包中的INC Header0中包括的计算节点聚合信息,得到所述第四通信数据包;
在所述网络设备是集合通信系统所设定的网络根设备的情况下,将所述第三通信数据包中所述INC Header0中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换,以及根据更新后的所述网络设备本地的计算节点聚合信息,更新所述第三通信数据包中的INC Header0中包括的计算节点聚合信息,得到INC聚合树生成下行数据包作为所述第四通信数据包;
其中,所述INC Header0包括的计算节点聚合信息用于指示当前通信数据包对应的待聚合的源头计算节点;
所述网络设备本地的计算节点聚合信息用于指示所述网络设备对应的聚合树节点包括的源头计算节点。
7.如权利要求5所述的方法,其特征在于,
所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包;
所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合任务上行数据包的情况下,所述第三通信数据包还包括符合第二格式的INC帧头,记为INC Header2;
所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存,包括:
根据所述INC Header2包括的计算节点聚合信息和所述网络设备本地的计算节点聚合信息,将所述第三通信数据包中的待聚合数据和所述网络设备本地缓存数据中的已聚合结果进行聚合后,更新所述网络设备本地缓存数据中的已聚合结果;
在确定所述网络设备已完成自身聚合任务的情况下,根据所述更新后的已聚合结果生成INC聚合任务上行数据包或者INC聚合任务下行数据包,作为所述第四通信数据包;
在确定所述网络设备未完成自身聚合任务的情况下,将所述第三通信数据包的非业务数据保存在所述网络设备本地,记为INC聚合任务上行缓存数据包头;
其中,所述INC Header2包括的计算节点聚合信息用于指示当前通信数据包对应的待聚合的源头计算节点;
所述网络设备本地的计算节点聚合信息用于指示所述网络设备对应的聚合树节点包括的源头计算节点。
8.如权利要求7所述的方法,其特征在于,
所述根据所述更新后的已聚合结果生成INC聚合任务上行数据包或者INC聚合任务下行数据包,包括:
在所述网络设备不是集合通信系统所设定的网络根设备的情况下,根据所述更新后的已聚合结果更新所述第三通信数据包中的待聚合数据,以及将所述INC Header2包括的计算节点聚合信息更新为所述更新后的已聚合结果对应的源头计算节点,得到所述INC聚合任务上行数据包;
在所述网络设备是集合通信系统所设定的网络根设备的情况下,根据所述更新后的已聚合结果更新所述第三通信数据包中的待聚合数据,以及将所述第三通信数据包中所述INC Header2中的目的IP缓存字段值和所述IP包头中的目的IP地址字段值进行交换,将所述INC Header2包括的计算节点聚合信息更新为所述更新后的已聚合结果对应的源头计算节点,得到所述INC聚合任务下行数据包。
9.如权利要求5所述的方法,其特征在于,
所述集合通信数据包包括以下一种或多种类型:
INC聚合树生成上行数据包、INC聚合树生成下行数据包、INC聚合任务上行数据包、INC聚合任务下行数据包;
所述第三通信数据包包括IP包头;
在所述第三通信数据包为INC聚合任务下行数据包的情况下,所述第三通信数据包还包括符合第二格式的INC帧头,记为INC Header2;
所述第二INC引擎对所述第三通信数据包进行数据包处理,获得第四通信数据包,包括:
根据所述网络设备本地保存的INC聚合任务上行缓存数据包头和所述第三通信数据包,获得至少一个INC聚合任务下行数据包,作为所述第四通信数据包;
其中,所述至少一个INC聚合任务下行数据包包括所述第三通信数据包和新的INC聚合任务下行数据包;
所述新的INC聚合任务下行数据包根据以下方式生成:
获取所述网络设备本地的INC聚合任务上行缓存数据包头;
针对每一个INC聚合任务上行缓存数据包头,根据所述第三通信数据包,分别生成对应的新的INC聚合任务下行数据包;
将每一个所述新的INC聚合任务下行数据包中所述INC Header2中的目的IP缓存字段值和该新的INC聚合任务下行数据包中IP包头中的目的IP地址字段值进行交换。
10.一种网卡,其特征在于,包括,
第一数据收发模块和第一在网计算INC引擎;
所述第一数据收发模块设置为,接收第一通信数据包;根据所述第一通信数据包中包含的在网计算INC标识,将所述第一通信数据包发送到所述第一INC引擎;所述INC标识用于指示第一通信数据包为集合通信数据包;
所述第一INC引擎,设置为根据所述第一通信数据包对应的集合通信数据包类型,对所述第一通信数据包进行数据包重封装,获取至少一个第二通信数据包;
所述第一数据收发模块还设置为,发送所述至少一个第二通信数据包到集合通信系统中的通信网络或所述计算节点的上层业务功能模块。
11.一种网络设备,其特征在于,包括
第二数据收发模块和第二在网计算INC引擎;
所述第二数据收发模块设置为,接收第三通信数据包;根据所述第三通信数据包中包含的在网计算INC标识,将所述第三通信数据包发送到所述第二INC引擎;所述INC标识用于指示第三通信数据包为集合通信数据包;
所述第二INC引擎设置为,根据所述第三通信数据包对应的集合通信数据包类型,对所述第三通信数据包进行数据包处理,获得第四通信数据包或进行本地数据缓存;
所述第二数据收发模块还设置为,在所述第四通信数据包不为空的情况下,发送所述第四通信数据包到所述集合通信系统中的通信网络或计算节点。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4任一项所述的集合通信方法;或者,如权利要求5-9任一项所述的集合通信方法。
CN202310897089.5A 2023-07-20 2023-07-20 一种集合通信方法、网卡、网络设备和存储介质 Pending CN116828050A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310897089.5A CN116828050A (zh) 2023-07-20 2023-07-20 一种集合通信方法、网卡、网络设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310897089.5A CN116828050A (zh) 2023-07-20 2023-07-20 一种集合通信方法、网卡、网络设备和存储介质

Publications (1)

Publication Number Publication Date
CN116828050A true CN116828050A (zh) 2023-09-29

Family

ID=88114525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310897089.5A Pending CN116828050A (zh) 2023-07-20 2023-07-20 一种集合通信方法、网卡、网络设备和存储介质

Country Status (1)

Country Link
CN (1) CN116828050A (zh)

Similar Documents

Publication Publication Date Title
US11601359B2 (en) Resilient network communication using selective multipath packet flow spraying
WO2021043181A1 (zh) 一种数据传输方法及装置
CN107211036B (zh) 一种数据中心网络组网的方法以及数据中心网络
CN107113241B (zh) 路由确定方法、网络配置方法以及相关装置
CN111147372B (zh) 下行报文发送、转发方法和装置
WO2020134144A1 (zh) 数据或报文转发的方法、节点和系统
US11303571B2 (en) Data communication method and data communications network
US20190052535A1 (en) Network topology system and building method for topologies and routing tables thereof
US20220174004A1 (en) Methods and apparatus for encoding local processing metadata in network headers
CN115914078A (zh) 报文转发方法及装置、蜻蜓网络
CN114124787A (zh) 数据发送方法、装置、设备及混合网络
WO2023116580A1 (zh) 路径切换方法、装置、网络设备、以及网络系统
WO2023011153A1 (zh) 负载均衡的哈希算法信息的确定方法、装置及存储介质
EP4325800A1 (en) Packet forwarding method and apparatus
CN116828050A (zh) 一种集合通信方法、网卡、网络设备和存储介质
WO2022052800A1 (zh) 一种通信系统、数据处理方法以及相关设备
WO2022166348A1 (zh) 路由方法、路由装置、控制器和计算机可读存储介质
WO2021169297A1 (zh) 一种传输节点标识的方法、设备及系统
WO2021218352A1 (zh) 流量监控方法、相关设备及系统
CN114900482A (zh) Ps架构下基于可编程交换机的梯度调度方法和装置
CN114363246A (zh) 众核的片上网络数据传输方法、装置、设备及介质
Belabed et al. Impact of ethernet multipath routing on data center network consolidations
WO2023169407A1 (zh) 一种下发路由表的方法及相关装置
WO2023050818A1 (zh) 数据转发方法、系统、电子设备和存储介质
CN107113244B (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