A remote DMA (RDMA) shim protocol laid atop an existing network data
transfer protocol but logically underneath higher level disk and file
access protocols specifies the portion of a data packet to be transferred
directly into a separate area of memory such as an application layer
memory buffer. This RDMA protocol identifies the area of memory into
which the data should be delivered, a data ID, data start, data length or
end, and flag bits. Option fields added to (or already present in) the
transport protocol describe the RDMA transfer. On reception of a packet
specifying RDMA, the receiving device delivers the data directly into the
correct memory location using the RDMA description data. In some
embodiments of the present invention, the RDMA shim protocol is
implemented with TCP options specifically introduced to enable RDMA and
thus reduce the overhead of transferring and receiving data with a
TCP-based protocol such as NFS or HTTP. Use of a TCP option technique
enables the construction of simple hardware accelerators to copy data
directly from the incoming packet into application memory buffers, thus
avoiding expensive copies within the protocol stack. Alternatively,
software techniques may be used to perform direct copying to the
application memory buffer. The RDMA protocol options thus enable the
protocol stack to decrease the number of copies required to perform data
transfers, thus lowering overhead costs.