NVMe over TCP is a storage networking protocol that enables access to NVMe (Non-Volatile Memory Express) storage devices over standard TCP/IP networks, delivering near-native NVMe performance without specialized hardware.
NVMe/TCP was standardized by NVM Express, Inc. as part of the NVMe over Fabrics (NVMe-oF) specification (TP8000, published 2018) and is now part of the mainstream NVMe 2.0 base specification. The protocol encapsulates NVMe commands and data inside TCP segments, using a defined PDU (Protocol Data Unit) framing layer that sits between NVMe and TCP. Because TCP handles flow control, ordering, and retransmission, NVMe/TCP requires no changes to your network switches, NICs, or cabling — any standard Ethernet infrastructure at 10 GbE or higher works out of the box.
The Linux kernel has included an NVMe/TCP initiator driver since kernel 5.0 (2019) and a target implementation via the nvmet-tcp module since 5.0 as well. This means the vast majority of modern Linux distributions ship with full NVMe/TCP support without any out-of-tree drivers. On the performance side, NVMe/TCP supports up to 64,000 I/O queues per controller and up to 64,000 commands per queue — a dramatic improvement over legacy protocols like iSCSI, which supports a single queue with 128 commands.
The protocol operates on TCP port 4420 by default (IANA-assigned). A typical connection flow begins with the initiator establishing a TCP connection to the target, followed by an NVMe/TCP Connect command that specifies the target NVMe subsystem NQN (NVMe Qualified Name). After authentication (optional, using DH-HMAC-CHAP), I/O queues are established and the initiator can submit read/write commands that map directly to NVMe queue entries on the target controller.
As the subject of this glossary, NVMe/TCP is the central protocol tying together all surrounding concepts — namespaces, subsystems, initiators, targets, and transport-layer metrics like IOPS and latency. Its key differentiator from other NVMe-oF transports (RDMA, Fibre Channel) is that it trades a small amount of additional CPU overhead for universal infrastructure compatibility. simplyblock.io is built on NVMe/TCP, providing Kubernetes-native block storage that inherits the protocol's performance advantages without requiring any specialized hardware.
| Protocol | Transport | Latency | Special Hardware |
|---|---|---|---|
| NVMe/TCP | TCP/IP Ethernet | 25–40 µs | None |
| NVMe/RDMA | RDMA (RoCE/iWARP) | 10–20 µs | RDMA-capable NIC |
| iSCSI | TCP/IP Ethernet | 100–200 µs | None |
| Fibre Channel | FC fabric | 30–50 µs | FC HBA + FC switches |