<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc editing="no"?>
<?rfc tocompact="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc ipr="trust200902" docName="draft-ietf-nfsv4-scsi-layout-nvme-06" category="std" consensus="true" submissionType="IETF" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="pNFS SCSI Layout for NVMe">Using the Parallel NFS (pNFS) SCSI Layout to access NVMe storage devices</title>

    <author initials="C." surname="Hellwig" fullname="Christoph Hellwig" role="editor">
      <organization></organization>
      <address>
        <email>hch@lst.de</email>
      </address>
    </author>
    <author initials="C." surname="Lever" fullname="Charles Lever">
      <organization abbrev="Oracle">Oracle Corporation</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>chuck.lever@oracle.com</email>
      </address>
    </author>
    <author initials="S." surname="Faibish" fullname="Sorin Faibish">
      <organization>Opendrives.com</organization>
      <address>
        <postal>
          <street>11 Selwyn Road</street>
          <city>Newton</city>
          <region>MA</region>
          <code>02461</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 617-510-0422</phone>
        <email>s.faibish@opendrives.com</email>
      </address>
    </author>
    <author initials="D." surname="Black" fullname="David L. Black">
      <organization>Dell Technologies</organization>
      <address>
        <postal>
          <street>176 South Street</street>
          <city>Hopkinton</city>
          <region>MA</region>
          <code>01748</code>
          <country>United States of America</country>
        </postal>
        <email>david.black@dell.com</email>
      </address>
    </author>

    <date year="2024" month="January" day="09"/>

    <area>Transport</area>
    <workgroup>NFSv4</workgroup>
    <keyword>NFSv4</keyword>

    <abstract>


<t>This document specifies how to use the Parallel Network File System (pNFS)
Small Computer System Interface (SCSI) Layout Type to access storage devices
using the Non-Volatile Memory Express (NVMe) protocol family.</t>



    </abstract>



  </front>

  <middle>


<section anchor="sec:intro"><name>Introduction</name>

<t>NFSv4.1 (in <xref target="RFC8881"/>) includes a pNFS feature that allows
reads and writes to be performed by other means than directing read and
write operations to the server.  Through use of this feature, the server,
in the role of metadata server is responsible for managing file and
directory metadata while separate means are provided for execution of
reads and writes.</t>

<t>These other means of performing file reads and writes are defined by
individual mapping types which often have their own specifications.</t>

<t>The pNFS Small Computer System Interface (SCSI) layout <xref target="RFC8154"/> is a layout
type that allows NFS clients to directly perform I/O to block storage devices
while bypassing the Metadata Server (MDS).  It is specified by using
concepts from the SCSI protocol family for the data path to the storage devices.</t>

<t>NVM Express (NVMe), or the Non-Volatile Memory Host Controller Interface
Specification, is a set of specifications to talk to storage devices over
a number of protocols such as PCI Express (PCIe), Fibre Channel (FC) and
TCP/IP or Remote Direct Memory Access (RDMA) networking.  NVMe is currently
the by far dominant protocol used to access PCIe Solid State Disks (SSDs),
and increasingly adopted for remote storage access where it replaces
SCSI-based protocols such as iSCSI.</t>

<t>This document defines how NVMe Namespaces using the NVM Command Set <xref target="NVME-NVM"/>
exported by NVMe Controllers implementing the
NVMe Base specification <xref target="NVME-BASE"/> are to be used as
storage devices using the SCSI Layout Type.
The definition is independent of the underlying transport used by the
NVMe Controller and thus supports Controllers implementing a wide variety
of transports, including PCI Express, RDMA, TCP and Fibre Channel.</t>

<t>This document does not amend the existing SCSI layout document.  Rather,
it
defines how NVMe Namespaces can be used within the SCSI Layout by
establishing a mapping of the SCSI constructs used in the SCSI layout
document to corresponding NVMe constructs.</t>

<section anchor="ssc:intro:reqlang"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="ssc:intro:defs"><name>General Definitions</name>

<t>The following definitions are provided for the purpose of providing
an appropriate context for the reader.</t>

<dl>
  <dt>Client</dt>
  <dd>
    <t>The "client" is the entity that accesses the NFS server's
resources.  The client may be an application that contains the
logic to access the NFS server directly or be part of the operating
system that provides remote file system services for a set of
applications.</t>
  </dd>
  <dt>Metadata Server (MDS)</dt>
  <dd>
    <t>The Metadata Server (MDS) is the entity responsible for coordinating
client access to a set of file systems and is identified by a server
owner.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="sec:slm"><name>SCSI Layout mapping to NVMe</name>

<t>The SCSI layout definition <xref target="RFC8154"/> references only a
few SCSI-specific concepts directly.  This document provides a mapping
from these SCSI concepts to NVM Express concepts that are used
when using the pNFS SCSI layout with NVMe namespaces.</t>

<section anchor="ssc:volident"><name>Volume Identification</name>

<t>The pNFS SCSI layout uses the Device Identification Vital Product Data (VPD)
page (page code 83h) from <xref target="SPC5"/> to identify the devices used by
a layout. Implementations that use NVMe namespaces as storage devices
map NVMe namespace identifiers to a subset of the identifiers
that the Device Identification VPD page supports for SCSI logical
units.</t>

<t>To be used as storage devices for the pNFS SCSI layout, NVMe namespaces
<bcp14>MUST</bcp14> support either the IEEE Extended Unique Identifier (EUI64) or
Namespace Globally Unique Identifier (NGUID) value reported in a Namespace
Identification Descriptor, the I/O Command Set Independent Identify
Namespace Data Structure, and the Identify Namespace Data Structure,
NVM Command Set <xref target="NVME-BASE"/>. If available, use of the NGUID value is
preferred as it is the larger identifier.</t>

<t>Note: The PS_DESIGNATOR_T10 and PS_DESIGNATOR_NAME have no equivalent
in NVMe and cannot be used to identify NVMe storage devices.</t>

<t>The pnfs_scsi_base_volume_info4 structure for an NVMe namespace
<bcp14>SHALL</bcp14> be constructed as follows:</t>

<t><list style="numbers">
  <t>The "sbv_code_set" field <bcp14>SHALL</bcp14> be set to PS_CODE_SET_BINARY.</t>
  <t>The "pnfs_scsi_designator_type" field <bcp14>SHALL</bcp14> be set to
  PS_DESIGNATOR_EUI64.</t>
  <t>The "sbv_designator" field <bcp14>SHALL</bcp14> contain either the NGUID or
  the EUI64 identifier for the namespace.  If both NGUID and EUI64
  identifiers are available, then the NGUID identifier <bcp14>SHOULD</bcp14> be
  used as it is the larger identifier.</t>
</list></t>

<t>RFC 8154 <xref target="RFC8154"/> specifies the "sbv_designator" field as an XDR variable
length opaque&lt;&gt;. The length of that XDR opaque&lt;&gt; value (part of
its XDR representation) indicates which NVMe identifier is present.
That length <bcp14>MUST</bcp14> be 16 octets for an NVMe NGUID identifier and
<bcp14>MUST</bcp14> be 8 octets for an NVMe EUI64 identifier.  All other lengths
<bcp14>MUST NOT</bcp14> be used with an NVMe namespace.</t>

</section>
<section anchor="ssc:fencing"><name>Client Fencing</name>

<t>The SCSI layout uses Persistent Reservations (PRs) to provide client
fencing.  For this to be achieved, both the MDS and the Clients have to
register a key with the storage device, and the MDS has to create a
reservation on the storage device.</t>

<t>The following sub-sections provide a full mapping of the required
PERSISTENT RESERVE IN and PERSISTENT RESERVE OUT SCSI commands <xref target="SPC5"/>
to NVMe commands which <bcp14>MUST</bcp14> be used when using
NVMe namespaces as storage devices for the pNFS SCSI layout.</t>

<section anchor="ssc:fencing:keys"><name>PRs - Key Registration</name>

<t>On NVMe namespaces, reservation keys are registered using the
Reservation Register command (refer to Section 7.3 of <xref target="NVME-BASE"/>)
with the Reservation Register Action
(RREGA) field set to 000b (i.e., Register Reservation Key) and
supplying the reservation key in the New Reservation Key (NRKEY)
field.</t>

<t>Reservation keys are unregistered using the Reservation Register
command with the Reservation Register Action (RREGA) field set to
001b (i.e., Unregister Reservation Key) and supplying the reservation
key in the Current Reservation Key (CRKEY) field.</t>

<t>One important difference between SCSI Persistent Reservations
and NVMe Reservations is that NVMe reservation keys always apply
to all controllers used by a host (as indicated by the NVMe Host
Identifier). This behavior is analogous to setting the ALL_TG_PT
bit when registering a SCSI Reservation key, and is always supported
by NVMe Reservations, unlike the ALL_TG_PT for which SCSI support is
inconsistent and cannot be relied upon.
Registering a reservation key with a namespace creates an
association between a host and a namespace. A host that is a
registrant of a namespace may use any controller with which that
host is associated (i.e., that has the same Host Identifier,
refer to Section 5.27.1.25 of <xref target="NVME-BASE"/>)
to access that namespace as a registrant.</t>

</section>
<section anchor="ssc:fencing:reg"><name>PRs - MDS Registration and Reservation</name>

<t>Before returning a PNFS_SCSI_VOLUME_BASE volume to the client, the MDS
needs to prepare the volume for fencing using PRs. This is done by
registering the reservation generated for the MDS with the device
(see <xref target="ssc:fencing:keys"/>) followed by a Reservation Acquire
command (refer to Section 7.2 of <xref target="NVME-BASE"/>) with
the Reservation Acquire Action (RACQA) field set to 000b (i.e., Acquire)
and the Reservation Type (RTYPE) field set to 4h (i.e., Exclusive Access
- Registrants Only Reservation).</t>

</section>
<section anchor="ssc:fenceaction"><name>Fencing Action</name>

<t>In case of a non-responding client, the MDS fences the client by
executing a Reservation Acquire command (refer to Section 7.2 of <xref target="NVME-BASE"/>),
with the Reservation Acquire Action
(RACQA) field set to 001b (i.e., Preempt) or 010b (i.e., Preempt and
Abort), the Current Reservation Key (CRKEY) field set to the
server's reservation key, the Preempt Reservation Key (PRKEY) field
set to the reservation key associated with the non-responding client
and the Reservation Type (RTYPE) field set to 4h (i.e., Exclusive
Access - Registrants Only Reservation).
The client can distinguish I/O errors due to fencing from other
errors based on the Reservation Conflict NVMe status code.</t>

</section>
<section anchor="ssc:recovery"><name>Client Recovery after a Fence Action</name>

<t>If an NVMe command issued by the client to the storage device returns
a non-retryable error (refer to the DNR bit defined in Figure 92 in
<xref target="NVME-BASE"/>), the client <bcp14>MUST</bcp14> commit all layouts that
use the storage device through the MDS, return all outstanding layouts
for the device, forget the device ID, and unregister the reservation
key.</t>

</section>
</section>
<section anchor="ssc:caches"><name>Volatile write caches</name>

<t>For NVMe controllers a volatile write cache is enabled if bit 0 of the
Volatile Write Cache (VWC) field in the Identify Controller Data
Structure, I/O Command Set Independent (see Figure 275 in <xref target="NVME-BASE"/>)
is set and the Volatile Write Cache Enable (WCE) bit (i.e., bit 00) in
the Volatile Write Cache Feature (Feature Identifier 06h)
(see Section 5.27.1.4 of <xref target="NVME-BASE"/>) is set.
If a volatile write cache is enabled on an NVMe namespace used as a
storage device for the pNFS SCSI layout, the pNFS server (MDS) <bcp14>MUST</bcp14>
use the NVMe Flush command to flush the volatile write cache to
stable storage before the LAYOUTCOMMIT operation returns by using the
Flush command (see Section 7.1 of <xref target="NVME-BASE"/>).
The NVMe Flush command is the equivalent to the SCSI SYNCHRONIZE
CACHE commands.</t>

</section>
</section>
<section anchor="sec:security"><name>Security Considerations</name>

<t>NFSv4 clients access NFSv4 metadata servers using the NFSv4
protocol. The security considerations generally described in <xref target="RFC8881"/>
apply to a client's interactions with
the metadata server. However, NFSv4 clients and servers access
NVMe storage devices at a lower layer than NFSv4. NFSv4 and
RPC security are not directly applicable to the I/Os to data servers
using NVMe.
Refer to Section <xref target="RFC8154" section="2.4.6" sectionFormat="bare">Extents Are Permissions</xref> and Section <xref target="RFC8154" section="4" sectionFormat="bare">Security Considerations</xref> of <xref target="RFC8154"/> for the
Security Considerations of direct block access from NFS clients.</t>

<t>pNFS with an NVMe layout can be used with NVMe transports (e.g., NVMe
over PCIe <xref target="NVME-PCIE"/>) that provide essentially no additional security
functionality. Or, pNFS may be used with storage protocols such as NVMe
over TCP <xref target="NVME-TCP"/> that can provide significant transport layer
security.</t>

<t>It is the responsibility of those administering and deploying pNFS with
an NVMe layout to ensure that appropriate protection is deployed to that
protocol based on the deployment environment as well as the nature and
sensitivity of the data and storage devices involved.  When using IP-based
storage protocols such as NVMe over TCP, data confidentiality and
integrity <bcp14>SHOULD</bcp14> be provided for traffic between pNFS clients and NVMe
storage devices by using a secure communication protocol such as Transport
Layer Security (TLS) <xref target="RFC8446"/>. For NVMe over TCP, TLS <bcp14>SHOULD</bcp14> be used as
described in <xref target="NVME-TCP"/> to protect traffic between pNFS clients and NVMe
namespaces used as storage devices.</t>

<t>A secure communication protocol might not be needed for pNFS with NVMe
layouts in environments where physical and/or logical security measures
(e.g., air gaps, isolated VLANs) provide effective access control
commensurate with the sensitivity and value of the storage devices and data
involved (e.g., public website contents may be significantly less sensitive
than a database containing personal identifying information, passwords,
and other authentication credentials).</t>

<t>Physical security is a common means for protocols not based on IP.
In environments where the security requirements for the storage
protocol cannot be met, pNFS with an NVMe layout <bcp14>SHOULD NOT</bcp14> be
deployed.</t>

<t>When security is available for the data server storage protocol,
it is generally at a different granularity and with a different
notion of identity than NFSv4 (e.g., NFSv4 controls user access
to files, and NVMe controls initiator access to volumes).  As
with pNFS with the block layout type <xref target="RFC5663"/>,
the pNFS client is responsible for enforcing appropriate
correspondences between these security layers. In environments
where the security requirements are such that client-side
protection from access to storage outside of the layout is not
sufficient, pNFS with a SCSI layout on a NVMe namespace <bcp14>SHOULD
NOT</bcp14> be deployed.</t>

<t>As with other block-oriented pNFS layout types, the metadata server
is able to fence off a client's access to the data on an NVMe namespace
used as a storage device.  If a metadata server revokes a layout, the
client's access <bcp14>MUST</bcp14> be terminated at the storage devices via fencing
as specified in <xref target="ssc:fencing"/>.  The client has a
subsequent opportunity to acquire a new layout.</t>

</section>
<section anchor="sec:iana"><name>IANA Considerations</name>

<t>The document does not require any actions by IANA.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC5663'>
  <front>
    <title>Parallel NFS (pNFS) Block/Volume Layout</title>
    <author fullname='D. Black' initials='D.' surname='Black'/>
    <author fullname='S. Fridella' initials='S.' surname='Fridella'/>
    <author fullname='J. Glasgow' initials='J.' surname='Glasgow'/>
    <date month='January' year='2010'/>
    <abstract>
      <t>Parallel NFS (pNFS) extends Network File Sharing version 4 (NFSv4) to allow clients to directly access file data on the storage used by the NFSv4 server. This ability to bypass the server for data access can increase both performance and parallelism, but requires additional client functionality for data access, some of which is dependent on the class of storage used. The main pNFS operations document specifies storage-class-independent extensions to NFS; this document specifies the additional extensions (primarily data structures) for use of pNFS with block- and volume-based storage. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='5663'/>
  <seriesInfo name='DOI' value='10.17487/RFC5663'/>
</reference>

<reference anchor='RFC8154'>
  <front>
    <title>Parallel NFS (pNFS) Small Computer System Interface (SCSI) Layout</title>
    <author fullname='C. Hellwig' initials='C.' surname='Hellwig'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>The Parallel Network File System (pNFS) allows a separation between the metadata (onto a metadata server) and data (onto a storage device) for a file. The Small Computer System Interface (SCSI) layout type is defined in this document as an extension to pNFS to allow the use of SCSI-based block storage devices.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8154'/>
  <seriesInfo name='DOI' value='10.17487/RFC8154'/>
</reference>

<reference anchor='RFC8881'>
  <front>
    <title>Network File System (NFS) Version 4 Minor Version 1 Protocol</title>
    <author fullname='D. Noveck' initials='D.' role='editor' surname='Noveck'/>
    <author fullname='C. Lever' initials='C.' surname='Lever'/>
    <date month='August' year='2020'/>
    <abstract>
      <t>This document describes the Network File System (NFS) version 4 minor version 1, including features retained from the base protocol (NFS version 4 minor version 0, which is specified in RFC 7530) and protocol extensions made subsequently. The later minor version has no dependencies on NFS version 4 minor version 0, and is considered a separate protocol.</t>
      <t>This document obsoletes RFC 5661. It substantially revises the treatment of features relating to multi-server namespace, superseding the description of those features appearing in RFC 5661.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8881'/>
  <seriesInfo name='DOI' value='10.17487/RFC8881'/>
</reference>


<reference anchor="SPC5" >
  <front>
    <title>SCSI Primary Commands-5</title>
    <author >
      <organization>INCITS Technical Committee T10</organization>
    </author>
    <date year="2019"/>
  </front>
  <seriesInfo name="ANSI INCITS" value="502-2019"/>
</reference>
<reference anchor="NVME-BASE" target="https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-2.0c-2022.10.04-Ratified.pdf">
  <front>
    <title>NVM Express Base Specification, Revision 2.0c</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="October"/>
  </front>
</reference>
<reference anchor="NVME-NVM" target="https://nvmexpress.org/wp-content/uploads/NVM-Express-NVM-Command-Set-Specification-1.0c-2022.10.03-Ratified.pdf">
  <front>
    <title>NVM Express NVM Command Set Specification, Revision 1.0c</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="October"/>
  </front>
</reference>
<reference anchor="NVME-TCP" target="https://nvmexpress.org/wp-content/uploads/NVM-Express-TCP-Transport-Specification-1.0c-2022.10.03-Ratified.pdf">
  <front>
    <title>NVM Express TCP Transport Specification, Revision 1.0c</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="October"/>
  </front>
</reference>


<reference anchor='RFC8446'>
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname='E. Rescorla' initials='E.' surname='Rescorla'/>
    <date month='August' year='2018'/>
    <abstract>
      <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8446'/>
  <seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>

<reference anchor='RFC2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="NVME-PCIE" target="https://nvmexpress.org/wp-content/uploads/NVM-Express-PCIe-Transport-Specification-1.0c-2022.10.03-Ratified.pdf">
  <front>
    <title>NVMe over PCIe Transport Specification, Revision 1.0c</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="October"/>
  </front>
</reference>


    </references>


<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>Carsten Bormann ran the scripted conversion from the XML2RFC v2 format
used by earlier drafts to the currently used markdown source format.</t>

<t>David Noveck provided ample feedback to various drafts of this document.</t>

</section>


  </back>

<!-- ##markdown-source:
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
/qSmbIwW4n8ARpBeuSU+AAA=

-->

</rfc>

