Patent ID: 7370082

Claim:
In a local system connected to a remote system through a network, wherein the local system comprises an upper layer protocol with a receive buffer and a remote direct memory access protocol for placing data directly into the receive buffer, a method of reducing communication overhead between the upper layer protocol and the remote direct memory access protocol to make remote direct memory access more efficient, the method comprising acts of: the upper layer protocol registering a receive buffer for remote direct memory access, the receive buffer having a corresponding lookup key to use in accessing the receive buffer; the remote direct memory access protocol receiving a data message from a remote system, the data message comprising data to write to the receive buffer and an instruction to invalidate the lookup key; the remote direct memory access protocol writing the data from the data message directly into the receive buffer by utilizing at least one of: (a) a buffer copy operation using one or more intermediate buffer and imposing relatively lower overhead but also offering relatively lower throughput, or (b) a zero-copy remote direct memory access operation which bypasses the one or more intermediate buffers and imposes relatively higher overhead but also offers relatively higher throughput, wherein the relatively higher overhead of a zero-copy transfer defines a buffer-copy threshold size, and data transfers below the buffer-copy transfer threshold size can be performed faster using the buffer-copy transfer, even though throughput is relatively lower, due to the relatively higher overhead of the zero-copy transfer; the remote direct memory access protocol invalidating the lookup key for the receive buffer so that no further changes can be made to the receive buffer, wherein invalidating the lookup key by the remote direct memory access protocol reduces the relatively higher overhead of the zero-copy transfer, and the buffer-copy threshold size, so that the zero-copy transfer is faster for relatively smaller data transfers; and the upper layer protocol verifying that the lookup key for the receive buffer has been invalidated.