InfiniBand(IB)是一种高性能计算和数据中心互连技术,它提供了低延迟、高带宽和高吞吐量的网络通信。RDMA(Remote Direct Memory Access)是一种用于高性能网络通信的技术,它允许数据在计算节点之间直接传输,绕过操作系统的缓冲区。RDMA可以在多种网络技术上实现,包括InfiniBand。InfiniBand支持RDMA,但RDMA并不限于InfiniBand,它也可以在其他网络技术上实现,如以太网。
RDMA(Remote Direct Memory Access)技术的实现原理是,
在网络传输过程中,通过将数据直接从一台计算机的内存传输到另一台计算机的内存,绕过操作系统内部的多次内存复制和上下文切换的开销,从而降低CPU的负载,提高网络通信性能和效率。
RDMA技术主要特点包括以下几个方面:
-
用户空间与内核空间数据传输:RDMA技术可以实现用户空间数据直接传输到内核空间,或者内核空间数据直接传输到用户空间,无需经过多次复制和上下文切换,降低了CPU的负载。
-
零拷贝技术:RDMA技术通过零拷贝技术,将数据从发送端内存直接复制到接收端内存,无需经过多次复制和上下文切换,从而大大提高了数据传输效率。
-
减少系统调用开销:RDMA技术通过减少系统调用的次数和系统调用的开销,从而提高了应用程序的性能和效率。
-
消息队列机制:RDMA技术通过在发送端和接收端之间建立消息队列机制,实现发送端和接收端之间的数据传输和管理,从而提高了数据传输的可靠性和稳定性。
总的来说,RDMA技术的实现原理是通过优化传统的网络传输方式,降低CPU的负载和系统调用的开销,提高应用程序的性能和效率,从而加快网络通信速度和效率。它特别适用于需要高吞吐量和低延迟的网络通信场景,如大规模并行计算机集群等。
Infiniband是一种高性能的计算机网络通信协议,其实现原理主要基于高速串行链路结构(Fabric)和远程直接内存访问(RDMA)技术。
Infiniband的Fabric架构可以实现高速、低延迟的数据传输。Fabric由交换机和路由器组成,其中交换机负责在节点之间建立专用的受保护通道,而路由器则用于将大网络分割为更小的子网并连接它们。
在Infiniband的Fabric架构中,每个链路都有一个设备连接到链路的每一端,这样在每一端控制传输(发送和接收)的特性都得到了很好的定义和控制。每个节点通过一个或多个Infiniband适配器与Fabric相连,适配器一端通过PCI Express(PCIe)接口连接到CPU,另一端通过Infiniband网络端口连接到Infiniband子网。
Infiniband的另一个重要技术是RDMA。RDMA服务可在处理器之间进行跨网络数据传输,数据直接在暂时内存之间传递,不需要操作系统介入或数据复制。RDMA通过减少对带宽和处理器开销的需要降低了时延,这种效果是通过在NIC的硬件中部署一项可靠的传输协议以及支持零复制网络技术和内核内存旁路实现的。
总的来说,Infiniband通过高速串行链路结构和远程直接内存访问技术,可以实现高性能、低延迟的网络通信,特别适用于需要高带宽、低延迟的数据中心和超级计算机等应用场景。
InfiniBand技术由以下组织机构共同维护和推动发展:
-
InfiniBand Trade Association(IBTA):IBTA是一个行业联盟,由多个公司组成,致力于推广和发展InfiniBand技术。IBTA负责制定和维护InfiniBand规范,以确保不同厂商的产品之间的互操作性。该组织还提供认证计划,确保符合规范的产品能够相互兼容。
-
InfiniBand Architecture Steering Committee(IASC):IASC是由多个公司组成的委员会,负责指导和协调InfiniBand技术的发展。IASC负责制定和更新InfiniBand架构规范,并推动新功能和扩展的开发。该委员会还负责促进InfiniBand生态系统的发展和推广。
RDMA(远程直接内存访问)技术的维护和推动涉及以下组织机构:
-
Internet Engineering Task Force(IETF):IETF是一个国际性的组织,致力于制定和推动互联网相关的标准。在RDMA领域,IETF的相关工作组负责标准化RDMA-over-IP(RoCEv2)和iWARP等协议。
-
OpenFabrics Alliance(OFA):OFA是一个开放的组织,专注于推动和支持开源RDMA和网络技术。OFA维护和推广OpenFabrics软件栈,提供开发工具、文档和资源支持,促进RDMA技术的应用和发展。
除了InfiniBand,还有一些其他的RDMA(远程直接内存访问)技术。
以下是一些常见的RDMA技术:
-
RoCE(RDMA over Converged Ethernet):RoCE是在以太网上实现RDMA的一种技术。它使用标准以太网协议栈,并通过使用RDMA传输层协议来提供低延迟和高带宽的数据传输。
-
iWARP(Internet Wide Area RDMA Protocol):iWARP是一种在TCP/IP网络上实现RDMA的技术。它利用了现有的以太网基础设施,并通过使用RDMA传输层协议来提供高性能的数据传输。
-
SRP(SCSI RDMA Protocol):SRP是一种在存储网络中实现RDMA的协议。它允许主机通过RDMA直接访问存储设备,从而提供了低延迟和高带宽的存储访问。这些都是基于RDMA技术的不同实现方式,它们都旨在提供高性能、低延迟的数据传输。具体选择哪种技术取决于应用场景和需求。
RoCE存在多个版本(如RoCE v1、RoCE v2等),每个版本的包结构可能会有所不同。
一个常见的RoCE v2包结构作为示例:
-
以太网头部(Ethernet Header):包含源MAC地址和目标MAC地址等以太网相关信息。
-
IPv4或IPv6头部(IP Header):包含源IP地址和目标IP地址等网络层相关信息。
-
UDP头部(UDP Header):包含源端口号和目标端口号等传输层相关信息。
-
RoCE v2头部(RoCEv2 Header):包含RoCE v2特定的头部信息,如Transport Header和Network Header。
-
Transport Header:包含RDMA操作类型、QP(Queue Pair)信息等。
-
Network Header:包含源和目标QP编号、RKey(Remote Key)等。
-
RDMA Payload:携带RDMA操作的有效载荷,可以是应用程序的数据或者RDMA操作的相关信息。
需要注意的是,这只是一个简化的RoCE v2包结构示例,实际的包结构可能更复杂,并且可能会根据具体的实现和配置进行微调。此外,还有一些RoCE v2包中的可选字段,如GRH(Global Routing Header),用于在全局网络中进行路由和转发。GRH包含源和目标IP地址、源和目标端口号等信息,以及其他与全局网络相关的字段。总之,RoCE包的具体结构取决于RoCE的版本和实现,但通常会包含以太网头部、IP头部、UDP头部、RoCE头部和RDMA有效载荷等部分。
当涉及到iWARP包的结构时,以下是一个简化的iWARP包结构示例:
-
以太网头部(Ethernet Header):包含源MAC地址和目标MAC地址等以太网相关信息。
-
IPv4或IPv6头部(IP Header):包含源IP地址和目标IP地址等网络层相关信息。
-
TCP头部(TCP Header):包含源端口号和目标端口号等传输层相关信息。
-
iWARP头部(iWARP Header):包含iWARP特定的头部信息,如iWARP控制信息和数据偏移量等。
-
iWARP控制信息(iWARP Control Information):包含与iWARP连接建立、维护和关闭相关的控制信息。
-
数据偏移量(Data Offset):指示数据在RDMA缓冲区中的偏移量。
-
RDMA有效载荷:携带RDMA操作的有效载荷,可以是应用程序的数据或者RDMA操作的相关信息。
需要注意的是,这只是一个简化的iWARP包结构示例,实际的包结构可能更复杂,并且可能会根据具体的实现和配置进行微调。
此外,iWARP还使用了一种称为RDMAP(RDMA Protocol)的协议来支持RDMA操作。RDMAP定义了iWARP的消息格式、流程和相关规范,用于在以太网上实现高性能的RDMA通信。
总之,iWARP包的具体结构取决于实现和配置,但通常会包含以太网头部、IP头部、TCP头部、iWARP头部和RDMA有效载荷等部分。
SRP(SCSI RDMA Protocol)是一种基于RDMA技术的SCSI协议,用于在远程主机之间传输SCSI命令和数据。下面是SRP包的简化结构:
-
SRP头部(SRP Header):包含了SRP协议相关的信息,如版本号、标志位等。
-
SCSI命令描述符(SCSI Command Descriptor):包含了要执行的SCSI命令的信息,如操作码、逻辑单元号等。
-
数据传输描述符(Data Transfer Descriptor):指定了数据传输的相关参数,如传输方向、数据长度等。
-
RDMA操作描述符(RDMA Operation Descriptor):用于指定RDMA操作的相关参数,如源和目的内存地址、数据长度等。
-
数据缓冲区(Data Buffer):用于存储数据传输的内容。
SRP包的具体结构可能会因实现和版本而有所差异,上述是一个简化的描述。实际的SRP包可能还包括其他字段和选项,用于支持错误检测、流控制等功能。详细的SRP包结构可以参考相关的协议规范或文档。