US 11,853,253 B1
Transaction based remote direct memory access
Nafea Bshara, San Jose, CA (US); Leah Shalev, Zichron Yaakov (IL); Erez Izenberg, Tel Aviv (IL); Georgy Machulsky, San Jose, CA (US); and Guy Nakibly, Kedumim (IL)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Dec. 29, 2015, as Appl. No. 14/983,335.
Claims priority of provisional application 62/233,139, filed on Sep. 25, 2015.
Claims priority of provisional application 62/182,259, filed on Jun. 19, 2015.
Int. Cl. G06F 15/173 (2006.01); H04L 67/1097 (2022.01)
CPC G06F 15/17331 (2013.01) [H04L 67/1097 (2013.01)] 32 Claims
OG exemplary drawing
 
1. An apparatus comprising:
a network adapter configured to transmit and receive remote direct memory access (RDMA) packets via a network connection;
an RDMA controller coupled to the network adapter;
a transaction memory coupled to the RDMA controller, the transaction memory being configured to store transaction identifiers and context data only for active RDMA transactions being processed by the RDMA controller, the transaction identifiers and context data being derived from combining two or more fields of their respective RDMA headers for the active RDMA transactions;
a host coupled to the network adapter, the host comprising a host processor and a main memory, the main memory being configured to store context data transaction identifiers for all RDMA transactions, the host processor being configured to perform, in response to receiving an RDMA initiation packet, a check to determine whether an RDMA operation can be accelerated using the RDMA controller;
the transaction memory being not directly accessible to the host processor; and
the RDMA controller being configured to accelerate the RDMA operation by bypassing the host, wherein accelerating the RDMA operation comprises:
responsive to receiving the RDMA initiation packet indicating initiation of an RDMA transaction, generate and store a first transaction identifier in the transaction memory, the first transaction identifier being derived from an RDMA header of the RDMA initiation packet,
generate and store RDMA context data for the RDMA transaction in the transaction memory at a memory address associated with the first transaction identifier, the RDMA context data being generated from combining two or more fields of the RDMA initiation packet,
receive data sent with additional RDMA packets for the initiated RDMA transaction, the data including information extracted from two or more fields of one or more RDMA headers of the additional RDMA packets,
generate a second transaction identifier based on the information extracted from the one or more RDMA headers of the additional RDMA packets, the second transaction identifier matching the first transaction identifier,
with the second transaction identifier, retrieve at least a portion of the context data from the memory address associated with the first transaction identifier in the transaction memory, and
based on the retrieved context data, determine a target location in the main memory and perform at least a portion of the RDMA transaction, the determined target location being used for the performing at least a portion of the RDMA transaction.