Transporting operations of arbitrary size over remote direct memory access
First Claim
1. A computer-implemented method for establishing a connection that exchanges data using server message block (SMB/SMB2) over remote direct memory access (RDMA), the method comprising:
- Receiving, by a receiver, a first SMB Direct Data Transfer packet, wherein the first SMB Direct Data Transfer packet comprises a RemainingDataLength field and SMB2 data, wherein the RemainingDataLength field is equal to a number of bytes of a fragmented message that the receiver has yet to receive;
determining if the RemainingDataLength field is non-zero;
when the RemainingDataLength field is zero;
processing the SMB2 data in the first SMB Direct Data Transfer packet;
when the RemainingDataLength field is non-zero;
allocating a reassembly buffer to the connection;
copying the SMB2 data from the first SMB Direct Data Transfer packet into the reassembly buffer;
receiving at least one other SMB Direct Data Transfer packet; and
copying the SMB2 data from the at least one other SMB Direct Data Transfer packet into the reassembly buffer.
3 Assignments
0 Petitions
Accused Products
Abstract
The embodiments described herein generally relate to a protocol for implementing data operations, e.g., a version of SMB, atop RDMA transports. In embodiments, systems and methods use the protocol definition, which specifies new messages for negotiating an RDMA connection and for transferring SMB2 data using the negotiated communication. A new protocol message may include new header information to determine message size, number of messages, and other information for sending the SMB2 data over RDMA. The header information is used to accommodate differences in message size requirements between RDMA and SMB2. The SMB Direct protocol allows SMB2 data to be fragmented into multiple individual RDMA messages that a receiver may then logically concatenate into a single SMB2 request or SMB2 response. The SMB Direct protocol also may allow SMB2 to transfer application data via efficient RDMA direct placement and to signal the application data'"'"'s availability when the transfer is complete.
207 Citations
20 Claims
-
1. A computer-implemented method for establishing a connection that exchanges data using server message block (SMB/SMB2) over remote direct memory access (RDMA), the method comprising:
-
Receiving, by a receiver, a first SMB Direct Data Transfer packet, wherein the first SMB Direct Data Transfer packet comprises a RemainingDataLength field and SMB2 data, wherein the RemainingDataLength field is equal to a number of bytes of a fragmented message that the receiver has yet to receive; determining if the RemainingDataLength field is non-zero; when the RemainingDataLength field is zero; processing the SMB2 data in the first SMB Direct Data Transfer packet; when the RemainingDataLength field is non-zero; allocating a reassembly buffer to the connection; copying the SMB2 data from the first SMB Direct Data Transfer packet into the reassembly buffer; receiving at least one other SMB Direct Data Transfer packet; and copying the SMB2 data from the at least one other SMB Direct Data Transfer packet into the reassembly buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer readable storage device storing computer-executable instructions that when executed by a processor perform a method for exchanging data using data operations over remote direct memory access (RDMA), the method comprising:
-
establishing a connection with a server; negotiating a connection with the server, wherein the negotiation establishes a maximum number of bytes the server will receive in the connection; determining a number of packets to send data associated with the connection to the server; determining if fragmentation of the data is to be used; when fragmentation of the data is not to be used; sending a first protocol packet to the server with the data; when fragmentation of the data is to be used; initializing first bytes within a transmission buffer to send as data in the first protocol packet; setting a DataLength field and a RemainingDataLength field in the first protocol packet, wherein the RemainingDataLength field is equal to a number of bytes of a fragmented message that the server has yet to receive; sending the first protocol packet to the server; for at least a second protocol packet, instructions to repeat, comprising; initializing bytes within the transmission buffer to send as data in the at least a second protocol packet; setting the RemainingDataLength field in the at least a second protocol packet; and sending the at least a second protocol packet to the server. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A system configured to exchange data using server message block (SMB/SMB2) over remote direct memory access (RDMA), the system comprising:
-
a RDMA network interface card (RNIC) operable to transfer data by a RDMA message; memory operable to store computer program instructions executable by a processor; and the processor, in communication with the RNIC and the memory, operable to execute a kernel, the kernel comprising; a first protocol client operable to; communicate fragmented SMB data in two or more RDMA messages, wherein each RDMA message comprises a RemainingDataLength field, and wherein the RemainingDataLength field is equal to a number of bytes of a fragmented message that a receiver has yet to receive; and create a receive buffer to exchange credits, wherein the credits determine a number of RDMA messages that a sender may send to a receiver. - View Dependent Claims (17, 18, 19, 20)
-
Specification