Patent ID: 7698361

Claim:
A system for offloading an input/output (I/O) task from a first computer to a second computer, the system comprising: a client running on the first computer; a server running on the second computer; and at least one remote direct memory access (RDMA) channel linking the first computer and the second computer, wherein the first computer and the second computer communicate in accordance with a protocol comprising: a network discovery phase, wherein the network discovery phase is configured to: create, by the client, an RDMA connection to the server over a shared RDMA-capable provider; mutually authenticate, by the client and the server, the RDMA connection; send, by the sewer, a credit request message indicating a buffer status of the server, the buffer status corresponding to an availability of the server to process the I/O requests that the client is attempting to offload to the server, wherein the credit request message comprises a first field of a plurality of fields, the first field comprising: a negative value indicating a number of credits that the client has to give up when, based on the sewer availability, the sever cannot process any further I/O requests, and a positive value indicating a number of the credits that the server has newly allocated for use by the client when, based on the server availability, the server can accept further I/O requests from the client, the credits corresponding to a number of I/O requests the client is attempting to offload to the server; receive, by the client, the credit request message; and in response to the client receiving the credit request message, send, from the client to the server: a first indication, if the first field in the credit request message comprises the positive value, wherein the first indication notifies the server of at least one of the newly allocated credits that the client has used, and at least one second indication, if the first field in the credit request message comprises the negative value, wherein each second indication corresponds to each credit that the client has released and wherein each second indication comprises a credit release value in an offset of a second field of a plurality of fields in each second indication, the credit release value being associated with a remaining amount of releasable credits by decrementing a magnitude of the negative value with each second indication, the offset of the second field being capable of conveying the credit release value in a 32 bit representation; an I/O processing phase configured to process the I/O requests offloaded to the server, wherein read operations of the I/O phase are implemented using RDMA operations and write operations of the I/O phase are implemented using send operations, wherein the write operations are not implemented using the RDMA operations.