IP Library Granted Patent US 10,165,051
Granted Patent B2
US 10,165,051 · App. 15/499,315 · Granted Dec 25, 2018

High performance IP processor using RDMA

Inventor: Ashish A. Pandya (El Dorado Hills, CA)
H04L67/1097H04L29/06H04L67/34H04L69/10H04L69/12H04L69/16H04L69/161H04L69/163H04L69/165H04L69/166H04L69/32H04L69/329H04L69/18
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,165,051
App. No.
15/499,315
Granted
Dec 25, 2018
Kind
B2
Abstract

An architecture provides capabilities to transport and process Internet Protocol (IP) packets from Layer 2 through transport protocol layer and may also provide packet inspection through Layer 7. A set of engines may perform pass-through packet classification, policy processing and/or security processing enabling packet streaming through the architecture at nearly the full line rate. A scheduler schedules packets to packet processors for processing. An internal memory or local session database cache stores a session information database for a certain number of active sessions. The session information that is not in the internal memory is stored and retrieved to/from an additional memory. An application running on an initiator or target can in certain instantiations register a region of memory, which is made available to its peer(s) for access directly without substantial host intervention through RDMA data transfer.

Claims (88)

1. A method of using a hardware-implemented processor for enabling storage or retrieval of data in a memory subsystem comprising flash memory, in a target system comprising a host processor and coupled to a TCP/IP network consisting of TCP/IP protocol and comprising a transport layer and a network layer wherein the transport layer and network layer consist of TCP/IP, the method comprising:

(a) receiving a request to register a region of flash memory from an application running on the target system;

(b) making the region of flash memory available to one or more peers of the application running on the target system that made the request:

(c) receiving data packets, by the hardware-implemented processor, via the network consisting of TCP/IP, at the target system;

(d) receiving a remote direct memory access request in the data packets transmitted via the network consisting of TCP/IP, the remote direct memory access request including a location of a region of flash memory registered for the remote direct access memory operation;

(e) in response to the receiving acts in parts (c) and (d), storing data to or retrieving data from the memory subsystem comprising flash memory with the hardware-implemented processor, without the host processor controlling memory access during the storing or retrieving; and

(f) wherein the remote direct memory access request specifies the data stored or retrieved.

2. The method of claim 1 further comprising:

(i) registering a region of the memory subsystem comprising flash memory of the target system for access by a remote initiator system coupled to the TCP/IP network;

(ii) directing a message to the remote initiator system identifying the registered region of the memory subsystem comprising flash memory;

(iii) receiving additional remote direct memory access requests from the remote initiator system; and

(iv) transferring data specified by the additional remote direct memory access requests to or from the registered region of the memory subsystem comprising flash memory with the hardware-implemented processor without the host processor controlling the transferring of data.

3. The method of claim 2 wherein the registering comprises registering the identity of the region of the memory subsystem comprising flash memory with the initiator system.

4. The method of claim 2 wherein the registered region of the memory subsystem comprising flash memory comprises a buffer.

5. The method of claim 2 further comprising, in response to the additional remote direct memory access requests received from the initiator system, using the host processor in the target system to:

(A) perform address translation of memory addresses;

(B) compare the translated addresses to the registered region;

(C) perform security key verification; and

(D) if the comparing and the verification are successful, allow the hardware-implemented processor to store the data to or retrieve the data from the translated memory addresses without the host processor controlling the storage or retrieval of the data.

6. The method of claim 2 further comprising, in response to the additional remote direct memory access requests received from the initiator system:

(A) using the host processor in the target system to perform address translation of memory addresses;

(B) comparing the translated addresses to the registered region;

(C) using the hardware-implemented processor to perform security key verification; and

(D) if the comparing and the verification are successful, allowing the hardware-implemented processor to store the data to or retrieve the data from the specified memory addresses without the host processor controlling the storage or retrieval of the data.

7. The method of claim 2 further comprising, in response to the additional remote direct memory access requests received from the initiator system, using the hardware-implemented processor to:

(A) perform address translation of memory addresses;

(B) compare the translated addresses to the registered region;

(C) perform security key verification; and

(D) if the comparing and the verification are successful, store the data to or retrieve the data from the specified memory addresses without the host processor controlling the storage or retrieval of the data.

8. The method of claim 2 further comprising, in response to the additional remote direct memory access requests received from the initiator system:

(A) using the hardware-implemented processor to perform address translation of memory addresses;

(B) comparing the translated addresses to the registered region;

(C) using the host processor in the target system to perform security key verification; and

(D) if the comparing and the verification are successful, allowing the hardware-implemented processor to store the data to or retrieve the data from the translated memory addresses without the host processor controlling the storage or retrieval of the data.

9. A method of using a hardware-implemented processor for enabling storage or retrieval of data in a flash memory subsystem, in a target system comprising a host processor and coupled to a TCP/IP network consisting of TCP/IP protocol and comprising a transport layer and a network layer wherein the transport layer and network layer consist of TCP/IP, the method comprising:

(a) receiving a request to register a region of the flash memory from an application running on the target system;

(b) making the region of the flash memory available to one or more peers of the application running on the target system that made the request:

(c) receiving data packets, by the hardware-implemented processor, via the network consisting of TCP/IP, at the target system;

(d) receiving a remote direct memory access request in the data packets transmitted via the network consisting of TCP/IP, the remote direct memory access request including the location of a region of flash memory registered for the remote direct access memory operation;

(e) in response to the receiving acts in parts (c) and (d), storing data to or retrieving data from the flash memory subsystem with the hardware-implemented processor, without the host processor controlling flash memory access during the storing or retrieving; and

(f) wherein the remote direct memory access request specifies the data stored or retrieved.

10. The method of claim 9 further comprising:

(i) registering a region of the flash memory subsystem of the target system for access by a remote initiator system coupled to the TCP/IP network;

(ii) directing a message to the remote initiator system identifying the registered region of the flash memory subsystem;

(iii) receiving additional remote direct memory access requests from the remote initiator system; and

(iv) transferring data specified by the additional remote direct memory access requests to or from the registered region of the flash memory subsystem with the hardware-implemented processor without the host processor controlling the transferring of data.

11. The method of claim 10 wherein the registering comprises registering the identity of the region of the flash memory subsystem with the initiator system.

12. The method of claim 10 wherein the registered region of the flash memory subsystem comprises a buffer.

13. The method of claim 10 further comprising, in response to the additional remote direct memory access requests received from the initiator system, using the host processor in the target system to:

(A) perform address translation of flash memory addresses;

(B) compare the translated flash memory addresses to the registered region of the flash memory subsystem;

(C) perform security key verification; and

(D) if the comparing and the verification are successful, allow the hardware-implemented processor to store the data to or retrieve the data from the translated flash memory addresses without the host processor controlling the storage or retrieval of the data.

14. The method of claim 10 further comprising, in response to the additional remote direct memory access requests received from the initiator system:

(A) using the host processor in the target system to perform address translation of flash memory addresses;

(B) comparing the translated flash memory addresses to the registered region;

(C) using the hardware-implemented processor to perform security key verification; and

(D) if the comparing and the verification are successful, allowing the hardware-implemented processor to store the data to or retrieve the data from the specified flash memory addresses without the host processor controlling the storage or retrieval of the data.

15. The method of claim 10 further comprising, in response to the additional remote direct memory access requests received from the initiator system, using the hardware-implemented processor to:

(A) perform address translation of flash memory addresses;

(B) compare the translated flash memory addresses to the registered region;

(C) perform security key verification; and

(D) if the comparing and the verification are successful, store the data to or retrieve the data from the specified flash memory addresses without the host processor controlling the storage or retrieval of the data.

16. The method of claim 10 further comprising, in response to the additional remote direct memory access requests received from the initiator system:

(A) using the hardware-implemented processor to perform address translation of flash memory addresses;

(B) comparing the translated flash memory addresses to the registered region of the flash memory subsystem;

(C) using the host processor in the target system to perform security key verification; and

(D) if the comparing and the verification are successful, allowing the hardware-implemented processor to store the data to or retrieve the data from the translated flash memory addresses without the host processor controlling the storage or retrieval of the data.

17. A method of using a hardware-implemented processor for enabling storage or retrieval of data in a flash memory subsystem, in a target system comprising a host processor and coupled to an IP a network comprising a transport layer and a network layer wherein the transport layer and network layer are TCP/IP, the method comprising:

(a) receiving data packets, via the TCP/IP network, at the target system;

(b) receiving a remote direct memory access request in the data packets transmitted via the TCP/IP network;

(c) in response to the receiving acts in parts (a) and (b), storing data to or retrieving data from the flash memory subsystem with the hardware-implemented processor, substantially without the host processor controlling memory access during for the storing or retrieving; and

(d) wherein the remote direct memory access request specifies the data stored or retrieved.

18. The method of claim 17 further comprising:

(i) registering a region of the flash memory subsystem of the target system for access by a remote initiator system coupled to the network;

(ii) directing a message to the remote initiator system identifying the registered region of the flash memory subsystem;

(iii) receiving additional remote direct memory access requests from the remote initiator system; and

(iv) transferring data specified by the additional remote direct memory access requests to or from the registered region of the flash memory subsystem with the hardware-implemented processor substantially without the host processor controlling the transferring of data.

19. The method of claim 18 further comprising, in response to the additional remote direct memory access requests received from the initiator system, using the host processor in the target system to:

(A) perform address translation of flash memory addresses;

(B) compare the translated flash memory addresses to the registered region of the flash memory subsystem;

(C) perform security key verification; and

(D) if the comparing and the verification are successful, allow the hardware-implemented processor to store the data to or retrieve the data from the specified flash memory addresses substantially without the host processor controlling the storage or retrieval of the data.

20. The method of claim 18 further comprising, in response to the additional remote direct memory access requests received from the initiator system:

(A) using the host processor in the target system to perform address translation of flash memory addresses;

(B) comparing the translated flash memory addresses to the registered region of the flash memory subsystem;

(C) using the hardware-implemented processor to perform security key verification; and

(D) if the comparing and the verification are successful, allowing the hardware-implemented processor to store the data to or retrieve the data from the specified flash memory addresses substantially without the host processor controlling the storage or retrieval of the data.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2023
From: BLUE LOBSTER, SERIES 110 OF ALLIED SECURITY TRUST I
To: MEMORY ACCESS TECHNOLOGIES LLC
Reel/Frame 063112/0305 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2021
From: IP PROGRAM INC.
To: BLUE LOBSTER, SERIES 110 OF ALLIED SECURITY TRUST I
Reel/Frame 057842/0775 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2020
From: INFOSIL INC.
To: IP PROGRAM INC.
Reel/Frame 053186/0950 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2020
From: PROTOCOL ACQUISITION LLC; PANDYA, ASHISH
To: INFOSIL INC.
Reel/Frame 053064/0846 →
Continuity (4)
Continuation 14635807 · Mar 2, 2015
Continuation 10459674 · Jun 10, 2003
Provisional Application 60388407 · Jun 11, 2002
Related Publication 20170310756A1 · Oct 26, 2017