Remote direct attached multiple storage function storage device
A multiple function storage device is disclosed. The multiple function storage device may include an enclosure, a storage device associated with the enclosure, and an bridging device associated with the enclosure. The storage device may include a connector to receive a first message using a first protocol originating at a host, a physical function (PF) and a virtual function (VF) exposed by the storage device via the connector, storage for data relating to the first message, and a controller to manage writing a write data to the storage and reading a read data from the storage. The bridging device may include an embedded network interface controller (eNIC) to receive a second message using a second protocol from the host, a write buffer to store the write data to be written to the storage device by the host, a read buffer to store the read data to be read from the storage device for the host, a bridge circuit to translate the second message using the second protocol into the first message using the first protocol, and a root port to identify the storage device and to transmit the first message to the VF. The bridging device may be configured to map the host to the VF.
1 . A bridging device, comprising:
an interface controller to receive a first message from a host, the first message using a first protocol;
a bridge circuit to generate a second message based at least in part on the first message, the second message using a second protocol, the bridge circuit including:
a first queue pair for a storage device; and
a second queue pair for the storage device; and
an interface to transmit the second message to a storage device,
wherein the bridging device is configured to use the first queue pair and the second queue pair, the first queue pair and the second queue pair associated with a Quality of Service (QoS) requirement for the host, and
wherein the first protocol is different from the second protocol.
2 . The bridging device according to claim 1 , wherein the interface is configured to transmit the second message to a first controller of the storage device and to transmit a third message to a second controller of the storage device.
3 . The bridging device according to claim 2 , wherein:
the interface controller is configured to receive a fourth message; and
the bridge circuit is configured to generate the third message based at least in part on the fourth message.
4 . The bridging device according to claim 3 , wherein the interface controller is configured to receive the fourth message from a second remote host.
5 . The bridging device according to claim 2 , wherein:
the first queue pair includes a first submission/completion queue pair for the first controller of a storage device using the second protocol;
the second queue pair includes the second submission/completion queue pair for the second controller of the storage device using the second protocol; and
the bridging device further comprises:
a third submission/completion queue pair for a hypervisor of the host, the third submission/completion queue pair using the first protocol; and
a fourth submission/completion queue pair for a virtual machine (VM) of the host, the fourth submission/completion queue pair using the first protocol.
6 . The bridging device according to claim 2 , wherein:
the bridging device further comprises:
a first submission/completion queue pair for a VM of the host, the first submission/completion queue pair using the first protocol; and
a second submission/completion queue pair for the VM, the second submission/completion queue pair using the second protocol; and
wherein the bridging device is configured to use the first submission/completion queue pair and the second submission/completion queue pair to satisfy the QoS requirement for the VM.
7 . The bridging device according to claim 1 , wherein:
the host includes a hypervisor and a Virtual Machine (VM); and
the interface controller is configured to receive the first message from the hypervisor and to receive a fourth message from the VM.
8 . The bridging device according to claim 1 , wherein the storage device includes a Solid State Drive (SSD).
9 . The bridging device according to claim 1 , wherein the bridge circuit is configured to generate two second messages to send to a controller of the storage device based at least in part on the first message.
10 . The bridging device according to claim 1 , wherein the bridging device is operative to assign a tag to the second message so that a first response to the first message may be generated by the bridge circuit based at least in part on a second response to the second message and the tag assigned to the second message.
11 . A method, comprising:
receiving a first message from a host at a bridging device, the first message using a first protocol;
generating a second message based at least in part on the first message, the second message using a second protocol;
sending the second message from the bridging device to a first controller of a storage device; and
using a first submission/completion queue pair for the first controller of the storage device and a second submission/completion queue pair for the first controller of the storage device, the first submission/completion queue pair and the second submission/completion queue pair associated with a Quality of Service (QoS) requirement for the host,
wherein the bridging device is configured to send a third message to a second controller of the storage device, and
wherein the first protocol is different from the second protocol.
12 . The method according to claim 11 , further comprising:
receiving a fourth message at the bridging device;
generating the third message based at least in part on the fourth message; and
sending the third message from the bridging device to the second controller of the storage device.
13 . The method according to claim 11 , further comprising:
receiving a fourth message at the bridging device from the first controller of the storage device, the fourth message based at least in part on the first message;
generating a fifth message based at least in part on the fourth message; and
sending the fifth message from the bridging device to the host.
14 . The method according to claim 13 , wherein:
the fourth message includes the second protocol; and
generating the fifth message based at least in part on the fourth message includes generating the fifth message using the first protocol based at least in part on the fourth message.
15 . The method according to claim 11 , wherein receiving the first message from the host at the bridging device includes assigning a tag to the first message so that a first response to the first message may be generated by the bridge circuit based at least in part on a second response to the second message and the tag assigned to the second message.
16 . The method according to claim 11 , wherein:
the bridging device further includes:
a third queue pair for the second controller; and
a fourth queue pair for the second controller;
sending the second message from the bridging device to the first controller of the storage device includes sending the second message from the bridging device to the first controller of the storage device using one of the first submission/completion queue pair and the second submission/completion queue pair; and
the bridging device is configured to send the third message to the second controller of the storage device using one of the third queue pair and the fourth queue pair.
17 . A device, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
receiving a first message from a host at a bridging device, the first message using a first protocol;
generating a second message based at least in part on the first message, the second message using a second protocol;
sending the second message from the bridging device to a first controller of a storage device; and
using a first submission/completion queue pair for the first controller of the storage device and a second submission/completion queue pair for the first controller of the storage device, the first submission/completion queue pair and the second submission/completion queue pair associated with a Quality of Service (QoS) requirement for the host,
wherein the bridging device is configured to send a third message to a second controller of the storage device, and
wherein the first protocol is different from the second protocol.