RDMA over TCP的协议栈工作过程浅析
http://tech.ddvip.com 2008年01月22日 社区交流 收藏本文
内容摘要:RDMA(Remote Direct Memory Access)全名是"远程直接数据存取",RDMA让计算机可以直接存取其它计算机的内存,而不需要经过处理器耗时的传输。RDMA是一种使一台计算机可以直接将数据通过网络传送到另一台计算机内存中的特性,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响
图4.2是RDMA over TCP (Ethernet)的协议栈,最上面三层构成iWARP协议族,用来保证高速网络的互操作性。
RDMA层协议负责根据RDMA写操作、RDMA读操作转换成RDMA消息,并将RDMA消息传向Direct Data Placement (DDP)层。DDP层协议负责将过长的RDMA消息分段封装成DDP数据包继续向下转发到Marker-based, Protocol-data-unit-Aligned (MPA)层。MPA层在DDP数据段的固定间隔位置增加一个后向标志、长度以及CRC校验数据,构成MPA数据段。TCP层负责对TCP数据段进行调度,确保发包能够顺利到达目标位置。IP层则在数据包中增加必要的网络路由数据信息。
DDP层的PDU段的长度是固定的,DDP层含有一个成帧机制来分段和组合数据包,将过长的RDMA消息分段封装为DDP消息,处理过程如图4.3所示。

图4.3 DDP层拆分RDMA消息示意图
DDP数据段是DDP协议数据传输的最小数据单元,包含DDP协议头和ULP载荷。DDP协议头包含ULP数据的最终目的地址的位置和相关控制信息。DDP层将ULP数据分段的原因之一就是TCP载荷的最大长度限制。DDP的数据传输模式分为2种:tagged buffer方式和untagged buffer方式。tagged buffer方式一般应用于大数据量传输,例如磁盘I/O、大数据结构等;而untagged buffer方式一般应用于小的控制信息传输,例如:控制消息、I/O状态信息等。
MPA层在DDP层传递下来的DDP消息中,MPA层通过增加MPA协议头、标志数据以及CRC校验数据构成FPDU(framed PDU )数据段,处理过程如图4.4所示。
MPA层便于对端网络适配器设备能够快速定位DDP协议头数据,根据DDP协议头内设置的控制信息将数据直接置入相应的应用内存区域。MPA层具备错序校正能力,通过使能DDP,MPA避免内存复制的开销,减少处理乱序数据包和丢失数据包时对内存的需求。MPA将FPDU数据段传送给TCP层处理。
来源:IT168 作者:刘步荣 责编:豆豆技术应用