About NVMe/FC Devices

The NVMe/FC is a protocol for managing NVMe hosts and NVMe SSD storage devices on a Fibre channel network. NVMe/FC requires infrastructure such as fiber-optic cabling, NVMe/FC enabled interface adapters, and NVMe/FC enabled network switches. Fibre channel networks typically provide better throughput, lower latency, and higher performance when compared to iSCSI.

A host (often called the NVMe initiator) accesses the storage targets over a fibre channel network. The host can be a server, a VM, or any device equipped with an NVMe/FC adapter or software stack that can initiate requests to access remote NVMe/FC storage. To an NVMe initiator, the storage appears to be locally attached.

NVMe initiators and targets use dedicated NVMe HBAs which are NVMe adapter with ports through which it connects to a fibre channel network.

The parameters in the nvme connect command that represent the initiator and the target include the following:

  • host-traddr: This parameter specifies the host transport address and refers to the address of the initiator. The address or identifier is the host's fibre channel HBA port through which it connects to the fibre channel fabric. This port is typically called the local port.
  • traddr: This parameter specifies the transport address and refers to the address of the target server or controller hosting one or more NVMe SSD storage device. This port is typically called the remote port.
Local and remote port addresses are a combination of the following elements:
  • World Wide Namespace Name (WWNN): This is a globally unique identifier assigned to each namespace within an NVMe subsystem. The NVMe protocol uses WWNNs when routing commands to correct namespaces.
  • World Wide Namespace Port (WWNP): This is a globally unique identifier that specifies the port through which a namespace is accessed. The NVMe protocol uses WWNP to route commands to the appropriate namespace device.

You can query local and remote port address combinations to discover available target namespaces that represent the NVMe storage devices. After identifying the namepace of a storage device, you can then combine the local and remote port addresses with the device's namespace to connect the host to the target NVMe storage device.

For more information about the NVMe specification, see https://nvmexpress.org/specifications/.