IP Library Granted Patent US 10,503,679
Granted Patent B2
US 10,503,679 · App. 15/242,299 · Granted Dec 10, 2019

NVM express controller for remote access of memory and I/O over Ethernet-type networks

Inventor: Yiren Ronnie Huang (San Jose, CA)
Assignee: CNEX LABS, INC.
G06F13/4068G06F11/201G06F11/3027G06F11/349G06F12/0835G06F13/00G06F13/161G06F13/1684G06F13/42G06F13/4221G06F15/17337H04L61/1582H04L61/6022H04L67/1097G06F16/10G06F2213/0026H04L12/40176
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,503,679
App. No.
15/242,299
Granted
Dec 10, 2019
Kind
B2
Abstract

A method and system for enabling Non-Volatile Memory express (NVMe) for accessing remote solid state drives (SSDs) (or other types of remote non-volatile memory) over the Ethernet or other networks. An extended NVMe controller is provided for enabling CPU to access remote non-volatile memory using NVMe protocol. The extended NVMe controller is implemented on one server for communication with other servers or non-volatile memory via Ethernet switch. The NVMe protocol is used over the Ethernet or similar networks by modifying it to provide a special NVM-over-Ethernet frame.

Claims (39)

1. An extended NVMe controller comprising:

a host interface adapted to couple the extended NVMe controller to a host processor;

a direct network interface adapted to couple the extended NVMe controller to an external Ethernet network; and

wherein the extended NVMe controller is configured to:

receive, from the host processor, NVMe commands directed to a remote namespace for a remote non-volatile memory coupled to the external Ethernet network;

translate NVMe commands to NVMe over Ethernet (NVMoE) commands suitable for transmission over the external Ethernet network to a remote namespace controller for a remote namespace, the NVMe commands received from the host processer via the host interface, wherein the translation of the NVME command to NVMoE command comprises mapping a name space identifier (NSID) of the NVMe commands to an Ethernet media access control (MAC) address; and

transmit the translated NVMe command directly over the external Ethernet network to the remote namespace controller.

2. The extended NVMe controller of claim 1 , further comprising:

a mapping table that maps one or more NISDs to one or more Ethernet MAC addresses; and

wherein the extended NVMe controller maps the NISD of the NVMe commands to the Ethernet MAC address using the mapping table.

3. The extended NVMe controller of claim 1 further comprising a scheduler and arbiter to schedule a queue for processing the NVMe commands.

4. The extended NVMe controller of claim 1 , further comprising a local memory interface adapted to couple the extended NVMe controller to a local namespace for local non-volatile memory, wherein the extended NVMe controller receives from the host processor NVMe commands directed to the local namespace and provides I/O access for the host processor to the local namespace.

5. The extended NVMe controller of claim 4 , wherein the NVMe commands address the local namespace by HSID and NSID, and the extended NVMe controller accesses a directory server that manages HSIDs and NSIDs to obtain HSIDs and/or NSIDs for the local namespace.

6. The extended NVMe controller of claim 4 , wherein the extended NVMe controller is coupled to a second extended NVMe controller, wherein the second extended NVMe controller is coupled to a second host processor, wherein the second extended NVMe controller is connected to the extended NVMe controller via a second direct network interface, and wherein the second extended NVMe controller is configured to mirror the local namespace of the extended NVMe controller and act as a standby if the extended NVMe controller fails.

7. The extended NVMe controller of claim 5 , wherein the extended NVMe controller requests one or more HSIDs and one or more NSIDs from the directory server, and receives HSIDs and NSIDs that are not repeated in the external Ethernet network.

8. The extended NVMe controller of claim 1 , further comprising a shared buffer pool to provide flow control on command and data flows from the direct network interface.

9. The extended NVMe controller of claim 1 , wherein the external Ethernet network includes a layer 3 network, and wherein the extended NVMe controller is further configured to encapsulate the NVMoE commands within layer 3 packet headers for transmission over the layer 3 network.

10. A method for accessing a remote name space, the method comprising:

receiving, at an extended NVMe controller from a host processor, NVMe commands directed to a remote namespace for a remote non-volatile memory coupled to an external network, the extended NVMe controller also coupled to the external network, the extended NVMe controller coupled to the host processor via a host interface;

translating, at the extended NVMe controller, the received NVMe commands to NVMe over Ethernet (NVMoE) commands suitable for transmission over the external Ethernet network to a remote namespace controller for a remote namespace, wherein the translation of the NVME command to NVMoE command comprises mapping a name space identifier (NSID) of the NVMe commands to an Ethernet media access control (MAC) address; and

transmitting, at the extended NVMe controller, the translated NVMe command directly over the external Ethernet network to the remote namespace controller.

11. The method of claim 10 , wherein the extended NVMe controller further comprises:

a mapping table that maps one or more NISDs to one or more Ethernet MAC addresses; and

wherein the extended NVMe controller maps the NISD of the NVMe commands to the Ethernet MAC address using the mapping table.

12. The method of claim 10 , further comprising:

processing the received NVMe commands using a command scheduler and a command arbiter.

13. The method of claim 10 , further comprising:

receiving, by the extended NVMe controller from the host processor, NVMe commands directed to a local namespace;

providing, by the extended NVMe controller, I/O access for the host processor to the local namespace, wherein the extended NVMe controller comprises a local memory interface adapted to couple the extended NVMe controller to the local namespace for local non-volatile memory.

14. The method of claim 13 , wherein the NVMe commands address the local namespace by HSID and NSID, the method further comprising:

accessing a directory server that manages HSIDs and NSIDs to obtain HSIDs and/or NSIDs for the local namespace.

15. The method of claim 13 , wherein the extended NVMe controller is coupled to a second extended NVMe controller, wherein the second extended NVMe controller is coupled to a second host processor, wherein the second extended NVMe controller is connected to the extended NVMe controller via a second direct network interface, and wherein the second extended NVMe controller is configured to mirror the local namespace of the extended NVMe controller and act as a standby if the extended NVMe controller fails.

16. The method of claim 14 , further comprising:

requesting, by the extended NVMe controller, one or more HSIDs and one or more NSIDs from the directory server; and

receiving HSIDs and NSIDs that are not repeated in the external Ethernet network.

17. The method of claim 10 , further comprising:

providing flow control on command and data flows from the direct network interface using a shared buffer pool.

18. The method of claim 10 , wherein the external Ethernet network includes a layer 3 network, the method further comprising:

encapsulating, by the extended NVMe controller, the NVMoE commands within layer 3 packet headers for transmission over the layer 3 network.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2022
From: CNEX LABS, INC.
To: POINT FINANCIAL, INC.
Reel/Frame 058951/0738 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2021
From: CNEX LABS, INC.
To: POINT FINANCIAL, INC
Reel/Frame 058266/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2016
From: HUANG, YIREN
To: CNEX LABS, INC.
Reel/Frame 039491/0056 →
Continuity (3)
Continuation 14191335 · Feb 26, 2014
Provisional Application 61839389 · Jun 26, 2013
Related Publication 20160357698A1 · Dec 8, 2016
Cited By (2)
US 12,301,690 US 12,536,116