Protocol-independent support of remote DMA
First Claim
1. A method of facilitating remote direct memory access (RDMA) in a data communications system comprising the steps of:
- receiving a packet according to an intermediate protocol layer definition, wherein said intermediate protocol layer definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
processing said packet based at least in part on said RDMA byte codes, said processing further comprising;
reading said byte codes to identify an RDMA data payload within said packet; and
storing said RDMA data payload in a memory without copying said RDMA payload.
1 Assignment
0 Petitions
Accused Products
Abstract
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.
177 Citations
20 Claims
-
1. A method of facilitating remote direct memory access (RDMA) in a data communications system comprising the steps of:
-
receiving a packet according to an intermediate protocol layer definition, wherein said intermediate protocol layer definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
processing said packet based at least in part on said RDMA byte codes, said processing further comprising;
reading said byte codes to identify an RDMA data payload within said packet; and
storing said RDMA data payload in a memory without copying said RDMA payload. - View Dependent Claims (2, 3)
said byte codes comprise an RDMA identifier;
an RDMA, data offset value; and
an RDMA data length value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory using said data offset value and said data length value.
-
-
3. The method of claim 1, wherein:
-
said byte codes comprise;
an RDMA identifier;
a buffer offset value;
a sequence start value; and
a sequence end value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory starting at an address designated by said buffer offset value and said sequence start value.
-
-
4. A method of facilitating remote direct memory access (RDMA) in a data communications system comprising the steps of:
-
receiving a packet according to an adapted transport layer protocol definition, wherein said adapted transport layer protocol definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
processing said packet based at least in part on said RDMA byte codes, said processing further comprising;
reading said byte codes to identify an RDMA data payload within said packet; and
storing said RDMA data payload in a memory without copying said RDMA payload. - View Dependent Claims (5, 6, 7, 8)
said byte codes comprise an RDMA identifier;
an RDMA data offset value; and
an RDMA data length value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory using said data offset value and said data length value.
-
-
8. The method of claim 4, wherein:
-
said byte codes comprise;
an RDMA identifier;
a buffer offset value;
a sequence start value; and
a sequence end value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory starting at an address designated by said buffer offset value and said sequence start value.
-
-
9. A computer system for facilitating remote direct memory access (RDMA) in a data communications system, said computer system comprising a network interface, a memory, and a processor configured to:
-
receive a packet according to an intermediate protocol layer definition in said network interface, wherein said intermediate protocol layer definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
process said packet based in said processor at least in part on said RDMA byte codes, wherein said processor is connected to said network interface, read said byte codes to identify an RDMA data payload within said packet in said processor; and
store said RDMA data payload in said memory without copying said RDMA payload. - View Dependent Claims (10, 11)
said byte codes comprise an RDMA identifier;
an RDMA data offset value; and
an RDMA data length value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory using said data offset value and said data length value.
-
-
11. The computer system of claim 9, wherein:
-
said byte codes comprise;
an RDMA identifier;
a buffer offset value;
a sequence start value; and
a sequence end value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory starting at an address designated by said buffer offset value and said sequence start value.
-
-
12. A computer-readable storage medium, comprising computer instructions for:
-
receiving a packet according to an intermediate protocol layer definition, wherein said intermediate protocol layer definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
processing said packet based at least in part on said RDMA byte codes, said processing further comprising;
reading said byte codes to identify an RDMA data payload within said packet; and
storing said RDMA data payload in a memory without copying said RDMA payload. - View Dependent Claims (13, 14)
said byte codes comprise an RDMA identifier;
an RDMA data offset value; and
an RDMA data length value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory using said data offset value and said data length value.
-
-
14. The computer-readable storage medium of claim 12, wherein:
-
said byte codes comprise;
an RDMA identifier;
a buffer offset value;
a sequence start value; and
a sequence end value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory starting at an address designated by said buffer offset value and said sequence start value.
-
-
15. A computer data signal embodied in a carrier wave, comprising computer instructions for:
-
receiving a packet according to an intermediate protocol layer definition, wherein said intermediate protocol layer definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
processing said packet based at least in part on said RDMA byte codes, said processing further comprising;
reading said byte codes to identify an RDMA data payload within said packet; and
storing said RDMA data payload in a memory without copying said RDMA payload. - View Dependent Claims (16, 17)
said byte codes comprise an RDMA identifier;
an RDMA data offset value; and
an RDMA data length value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory using said data offset value and said data length value.
-
-
17. The computer data signal of claim 15, wherein:
-
said byte codes comprise;
an RDMA identifier;
a buffer offset value;
a sequence start value; and
a sequence end value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory starting at an address designated by said buffer offset value and said sequence start value.
-
-
18. A computer system for facilitating remote direct memory access (RDMA) in a data communications system, said computer system:
-
means for receiving a packet according to an intermediate protocol layer definition, wherein said intermediate protocol layer definition provides for a plurality of RDMA byte codes in the packet header, and wherein the packet header comprises one or more RDMA byte codes; and
means for processing said packet based at least in part on said RDMA byte codes, said means for processing further comprising;
means for reading said byte codes to identify an RDMA data payload within said packet; and
means for storing said RDMA data payload in a memory without copying said RDMA payload. - View Dependent Claims (19, 20)
said byte codes comprise an RDMA identifier;
an RDMA data offset value; and
an RDMA data length value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory using said data offset value and said data length value.
-
-
20. The computer system of claim 18, wherein:
-
said byte codes comprise;
an RDMA identifier;
a buffer offset value;
a sequence start value; and
a sequence end value; and
said memory is identified by said RDMA identifier; and
wherein said RDMA data is written to said memory starting at an address designated by said buffer offset value and said sequence start value.
-
Specification