NVMe over Fabrics

I find it amusing that NVMe, after touting how it had discarded all that old unneeded SCSI baggage in the name of streamlining the protocol, is slowly reintroducing much of what it had discarded. For example, NVMe 1.1 added SCSI reservations back in to the architecture. 

One of the big simplifications of NVMe was that, rather than send the command in a message, the protocol places commands in shared memory and has the initiator post a pointer to the command in an I/O request queue. The target is notified via a PCI register write when the request queue is not empty, and it pulls pointer from the queue, fetches the command from shared memory, and execute it.

Now in NVMe over Fabrics, as they scale up the NVMe architecture to larger fabrics than a PCIe bus, they are finding problems that they are solving by reintroducing sending commands as messages.

I find it terribly ironic, but also sad that not-invented-here hubris is resulting in the industry inventing a same-but-different I/O architecture.

© Steve Byan 2011-2019