首页 > 热点资讯 > 正文

探究DPU与InfiniBand协议:高性能计算的通信基石与技术解析

2024-05-01 04:39 来源:网络

当前备受瞩目的IC产业赛道——DPU(Data Processing Unit),其实质为IB(InfiniBand)协议的硬件卸载技术,使得芯片能够支持如RDMA等功能。鉴于博主正从事相关研究,即将启动《InfiniBand Network Architecture》一书的翻译与解读工作,期望借此助力广大致力于学习InfiniBand协议的同仁们。

IB协议的优势


InfiniBand协议作为面向

探究DPU与InfiniBand协议:高性能计算的通信基石与技术解析

高性能计算的网络通信标准,突出优势体现在:


具备广泛的协议兼容性,支持通过InfiniBand线缆传输非InfiniBand协议的隧道包,如IPv6和Ethertype包;


提供高带宽,可实现2.5Gb/s至30Gb/s的吞吐量;


具备超低延迟,应用程序延迟小于3微秒;


拥有高度可扩展的拓扑结构


非特权应用程序发送和接收信息时,无需内核切换至特权模式;


采用RDMA技术,由CA(通道适配器)硬件DMA直接传输信息,减轻处理器负担;


多数协议可在芯片层面实现,从而有效降低软件及处理器负载



InfiniBand专业术语



处理器节点:包含一组或多组处理器及其内存资源,通过主机通道适配器(HCA)与InfiniBand架构相连,每个HCA配备一个或多个端口;


端口:IBA设备与其链接之间的双向接口;


链路:两台IBA设备间端口之间的双向高速连接介质,基于serdes技术,单条链路速度可达2.5Gb/s,且吞吐率为250MB/s(受到8b/10b编码的影响)。通过四条或十二条链路组合,可进一步提升至1Gb/s和3Gb/s的吞吐率;


通道适配器(CA):类似网卡功能的硬件设备,文中未详述。



子网概念


子网:具有相同子网ID和同一位于子网管理器下的端口与链路的集合体。


子网管理器(SM)在子网启动时自动发现并配置所有设备,并定期检查子网拓扑结构变化;


配置过程中,子网管理器为每个端口分配唯一的本地ID和共享的子网ID,以便识别端口及子网位置;


能够在同一子网内交换数据包的所有CA、路由器端口及交换机端口被视为处于同一子网下;


子网之间可通过路由器实现互连互通。



报文基础知识


报文是两个CA间传输请求(request)或响应(response)信号的基本单位,其有效荷载(payload)部分最多可承载4KB数据。若CA需发送超出该长度的报文,则需将其分割成多个分包进行传输。每个报文由payload、路由报文头(header)、CRC校验等构成,其中header包括以下内容:


本地路由头部(LRH):包含目标端口本地ID(DLID)与源端口本地ID(SLID),两者均为16位,前者指示报文需通过交换机送达的目的地子网端口,后者标识报文来源子网ID。


全局路由头部(GRH):包括目标端口全局ID(DGID)与源端口全局ID(SGID),两者各占128位,其中高位64位表示CA端口的子网ID,低位64位表示端口的全局唯一ID(GUID)。GRH与LRH的关键区别在于,LRH用于同一子网内的传输,而GRH则适用于跨子网传输。



通道适配器CA的功能


每个CA端口在配置时即赋予唯一地址,当CA需要发送或接收信息时,首先需通过携带destination port ID的请求报文,并借助交换机和路由器引导,最终抵达目标CA。值得注意的是,CA才是实际的信息操纵者,而交换机和路由器仅扮演维持流量通道的角色。

交换器与路由器规则


CA发送请求报文后,会发生以下两种情况:


源CA与目标CA直连:报文沿单一链路直达目标CA端口,经解码DLID信息找到目标端口;目标CA接收请求并采取相应处理措施。


源CA与目标CA非直连:请求报文无法直达目标CA,故先传送至交换机或路由器的某个端口。




交换机规则:在子网内负责报文的路由工作,依据DLID查询预设于启动阶段的交换机内部转发表,确定报文应从哪个端口转发出去。(一个报文可能需经过多个交换机才能抵达目标CA)


路由器规则:当源CA与目标CA不在同一子网下时,请求报文携带GRH。交换机在子网内持续路由报文直至抵达路由器端口,此时路由器参照GRH中的DGID判断目标CA所在的子网,同样,路由器内部亦设有路由表。(报文需历经多个交换机方能到达目标CA)



报文传输类型


IB协议的消息传递本质上是在CA之间直接进行内存空间的数据交换,具体可分为三种类型:


从本地CA的内存传输信息至目标CA的内存;


从目标CA的内存读取信息,并存储在本地CA的内存中;


对目标CA的内存执行原子操作(读/改/写),并将返回数据存储在本地CA的内存。




向目标CA内存写入信息:

信息发送操作:请求报文不对数据写入内存的具体位置进行指示,由目标CA自行决定数据存储位置;


RDMA写操作:请求报文指明需写入目标CA内存的确切位置,报文含有有效荷载、内存起始地址、报文长度及授权该RDMA写操作的密钥。




从目标CA内存中读取信息:

CA向目标CA发起读取指定内存数据的请求,目标CA接收到请求后,返回一个或多个响应报文,请求端将返回报文中的数据存入指定内存中。




原子操作:

原子读取与加法操作:目标CA从本地指定内存中读取数据,将Add值与读取数据相加,将结果写回本地内存,并以原子响应包的形式返回原始读取值给请求端CA;请求端CA将读取的数据写入自身本地内存。


原子比较与交换操作:目标CA从本地指定内存读取数据并与Compare值进行比较,若相等,则将值写入指定位置,返回的响应操作与上述加法原子操作一致。





单包与多包传输


按照IBA标准,单个包的最大长度限制为4KB。对于超过这个大小的信息,需要分解为多包传输(multiple packet)进行发送:


若信息总长度介于4KB至8KB之间,则划分为“Send First”与“Send Last”两类操作;


若信息总长度大于8KB,则分为“Send First”、“Send Middle”以及“Send Last”三个类别,其中除首尾包外的其余数据均归类为“Send Middle”操作。



具体情况可见如下示意图:

(此处省略图片描述)

本文部分素材源自《InfiniBand Network Architecture》,未经原作者许可,不得转载。

(请注意遵守版权保护条款)

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系多特删除。(联系邮箱:[email protected]