System and method for efficient access for remote storage devices
First Claim
1. A network interface controller (NIC) for use in a server controlling a plurality of storage devices, the NIC comprising:
- a network interface configured to communicatively connect the NIC to a network comprising a client device and the server;
a communication interface configured to communicatively connect the NIC to a primary processing unit of the server;
a secondary processing unit;
a first memory containing instructions for execution by the secondary processing unit; and
a second memory;
wherein the instructions, when executed by the secondary processing unit, configure the NIC to;
receive, from the client device, an input/output (I/O) request for a storage device from among the plurality of storage devices;
store the I/O request in the second memory;
send the I/O request to the storage device;
receive, from the storage device, a response for the I/O request intended for the primary processing unit; and
send the client device an indication that the I/O request is completed;
wherein the I/O request contains an address of a data block for the storage device, and the first memory further contains instructions that when executed by the secondary processing unit configure the NIC to;
access a table of permissions to determine if the client device has permission to access the data block of the storage device, the table containing a list of data blocks of the storage device, and for each client device accessing the storage device, per instruction type permissions per each data block.
3 Assignments
0 Petitions
Accused Products
Abstract
A network interface controller (NIC) for use in a server controlling a plurality of storage devices provides remote access to a plurality of clients each accessing one or more storage devices of the plurality of storage devices. The NIC is configured to receive from at least a client device an input/output (I/O) request for a storage device of the plurality of storage devices and store the I/O request in a secondary memory thereof. The I/O request is sent to the storage device and a response respective of the I/O request intended for the primary processing unit of the server is received by the NIC. The client device is sent an indication that the I/O request is completed. In some exemplary embodiments, the NIC determines if the client device has appropriate I/O permissions to access a specific data block.
25 Citations
29 Claims
-
1. A network interface controller (NIC) for use in a server controlling a plurality of storage devices, the NIC comprising:
-
a network interface configured to communicatively connect the NIC to a network comprising a client device and the server; a communication interface configured to communicatively connect the NIC to a primary processing unit of the server; a secondary processing unit; a first memory containing instructions for execution by the secondary processing unit; and a second memory; wherein the instructions, when executed by the secondary processing unit, configure the NIC to; receive, from the client device, an input/output (I/O) request for a storage device from among the plurality of storage devices; store the I/O request in the second memory; send the I/O request to the storage device; receive, from the storage device, a response for the I/O request intended for the primary processing unit; and send the client device an indication that the I/O request is completed; wherein the I/O request contains an address of a data block for the storage device, and the first memory further contains instructions that when executed by the secondary processing unit configure the NIC to; access a table of permissions to determine if the client device has permission to access the data block of the storage device, the table containing a list of data blocks of the storage device, and for each client device accessing the storage device, per instruction type permissions per each data block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computerized method for providing a client device remote access to a server controlling a plurality of storage devices, by a network interface controller (NIC) comprising a secondary processing unit, a first memory and a second memory, the method comprising:
-
receiving from the client device an input/output (I/O) request for a storage device from among the plurality of storage devices, wherein the I/O request contains an address of a data block for the storage device; storing the I/O request in the secondary memory of the NIC; sending the I/O request from the NIC to the storage device; receiving, from the storage device, a response for the I/O request intended for a primary processing unit of the server; sending, from the NIC to the client device, an indication that the I/O request is completed; and accessing a table of permissions to determine if the client device has permission to access the data block of the storage device, the table containing a list of data blocks of the storage device, and for each client device accessing the storage device, per instruction type permissions per each data block. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A non-transitory computer readable medium having stored thereon instructions for causing one or more processing units to execute a method for providing a client device remote access to a server controlling a plurality of storage devices, by a network interface controller (NIC) comprising a secondary processing unit, a first memory and a second memory, the method comprising:
-
receiving from the client device an input/output (I/O) request for a storage device from among the plurality of storage devices, wherein the I/O request contains an address of a data block for the storage device; storing the I/O request in the secondary memory of the NIC; sending the I/O request from the NIC to the storage device; receiving, from the storage device, a response for the I/O request intended for a primary processing unit of the server; and sending, from the NIC to the client device, an indication that the I/O request is completed; and accessing a table of permissions to determine if the client device has permission to access the data block of the storage device, the table containing a list of data blocks of the storage device, and for each client device accessing the storage device, per instruction type permissions per each data block.
-
Specification