<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.6.10) -->
<?rfc docmapping="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-nfsv4-uncacheable-directories-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Uncacheable Dirents">Adding an Uncacheable Directory-Entry Metadata Attribute to NFSv4.2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-nfsv4-uncacheable-directories-02"/>
    <author initials="T." surname="Haynes" fullname="Thomas Haynes">
      <organization>Hammerspace</organization>
      <address>
        <email>loghyr@gmail.com</email>
      </address>
    </author>
    <date/>
    <area>General</area>
    <workgroup>Network File System Version 4</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<t>Network File System version 4.2 (NFSv4.2) clients commonly cache
directory entries (dirents) to improve performance. While effective
in many cases, such caching can prevent servers from enforcing
per-user access controls on directory entries and up-to-date directory
entry attributes such as size and timestamps.  This document
introduces a new uncacheable dirent metadata attribute for NFSv4.2 that
allows servers to advise clients that caching of directory entry
metadata is unsuitable.  This enables servers to present directory
contents based on user-specific access permissions while remaining
compatible with existing NFSv4.2 clients.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <?line 75?>

<t>Discussion of this draft takes place
on the NFSv4 working group mailing list (nfsv4@ietf.org),
which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=nfsv4"/>. Source
code and issues list for this draft can be found at
<eref target="https://github.com/ietf-wg-nfsv4/uncacheable-directories"/>.</t>
      <t>Working Group information can be found at <eref target="https://github.com/ietf-wg-nfsv4"/>.</t>
    </note>
  </front>
  <middle>
    <?line 86?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Clients of remote filesystems commonly cache directory entries
(dirents) to improve performance. This caching is typically shared
across users on the client and assumes that directory contents and
access permissions are uniform across users.</t>
      <t>In this document, the term directory is used to describe the context
in which directory entries are retrieved.  The uncacheable dirent
metadata attribute applies to the caching of directory entry (dirent)
metadata, including names and associated file object metadata such
as size and timestamps. It does not prohibit caching of the directory
object itself, nor does it affect caching of file data.</t>
      <t>Access Based Enumeration (ABE) <xref target="MS-ABE"/>, as implemented in the Server
Message Block (SMB) <xref target="MS-SMB2"/> and deployed in implementations such
as Samba <xref target="Samba"/>, restricts directory visibility based on the
access permissions of the requesting user.  Implementing similar
behavior in NFSv4.2 requires server involvement, as clients may not
have sufficient information to evaluate permissions based on identity
mappings, ACLs, or server-local policy.</t>
      <t>While effective in environments with centralized identity and
server-driven enumeration, the SMB ABE model tightly couples directory
enumeration with authorization and requires per-user directory views
that are not safely cacheable across users.  This approach does not
generalize well to NFS, where directory contents and metadata are
traditionally shared and cached.  The uncacheable dirent metadata attribute
allows servers to ensure correctness of directory-entry metadata
visibility and attributes without mandating a specific enumeration
or authorization model.</t>
      <t>Even in the absence of ABE, caching of directory entry metadata can
result in incorrect size and timestamp information when files are
modified concurrently, reducing the effectiveness of uncacheable
file data semantics when directory entry metadata is stale.</t>
      <t>This document introduces the uncacheable dirent metadata attribute to
NFSv4.2 to allow servers to advise clients that caching of
directory-entry metadata is unsuitable.  This enables correct
presentation of directory entry visibility and attributes, including
but not limited to Access Based Enumeration (ABE).  As such, it is an
<bcp14>OPTIONAL</bcp14> attribute to implement for NFSv4.2.  If both the client and
the server support this attribute, the client is advised to bypass
caching of directory-entry metadata for directories marked as
uncacheable.</t>
      <t>The uncacheable dirent metadata attribute is read-write and applies to
directory objects.  The data type is bool.</t>
      <t>Allowing clients to set this attribute provides a portable mechanism
to request that directory-entry metadata not be cached, without
requiring changes to application behavior or out-of-band administrative
configuration.</t>
      <t>A client can determine whether the uncacheable dirent metadata attribute
is supported for a given directory by issuing a GETATTR request and
examining the returned attribute list.</t>
      <t>The only way that the server can determine that the client supports
the attribute is if the client sends either a GETATTR or a SETATTR
with the uncacheable dirent metadata attribute.</t>
      <t>The uncacheable dirent metadata attribute governs caching behavior of
directory-entry metadata returned by READDIR and related operations,
not the directory object itself.</t>
      <t>Suppressing caching of file data alone is insufficient to guarantee
correct behavior if directory-entry metadata such as size and
timestamps remains cached. The uncacheable dirent metadata attribute
complements the fattr4_uncacheable_file_data attribute by ensuring
directory-entry metadata correctness.</t>
      <t>Using the process detailed in <xref target="RFC8178"/>, the revisions in this document
become an extension of NFSv4.2 <xref target="RFC7862"/>. They are built on top of the
external data representation (XDR) <xref target="RFC4506"/> generated from
<xref target="RFC7863"/>.</t>
      <section anchor="definitions">
        <name>Definitions</name>
        <dl>
          <dt>Access Based Enumeration (ABE)</dt>
          <dd>
            <t>When servicing a READDIR or GETATTR operation, the server provides
results based on the access permissions of the user making the request.</t>
          </dd>
          <dt>dirent</dt>
          <dd>
            <t>A directory entry representing a file or subdirectory and its
associated attributes.</t>
          </dd>
          <dt>dirent caching</dt>
          <dd>
            <t>A client-side cache of directory entry names and associated file
object metadata, used to avoid repeated directory lookup and attribute
retrieval.</t>
          </dd>
          <dt>uncacheable dirent metadata attribute</dt>
          <dd>
            <t>An NFSv4.2 file attribute that advises clients not to cache
directory-entry metadata associated with file objects, including
names, size, timestamps, and visibility.</t>
          </dd>
        </dl>
        <t>This document assumes familiarity with NFSv4.2 operations, attributes,
and error handling as defined in <xref target="RFC8881"/> and <xref target="RFC7862"/>.</t>
      </section>
      <section anchor="requirements-language">
        <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>
        <?line -18?>

</section>
    </section>
    <section anchor="caching-of-directory-entry-metadata">
      <name>Caching of Directory-Entry Metadata</name>
      <t>With a remote filesystem, the client typically caches directory
entries (dirents) locally to improve performance. This cooperation
succeeds because both the server and client operate under POSIX
semantics (<xref target="POSIX.1"/>) and agree to interpretation of mode bits with
respect to the uid and gid in NFSv3 <xref target="RFC1813"/>. For NFSv4.2, these
would respectively be the mode, owner, and owner_group attributes
defined in <xref section="5" sectionFormat="of" target="RFC8881"/>.  Note that this cooperation
does not apply to Access Control List (ACLs) entries as NFSv4.2
does not implement a strict POSIX style ACL.</t>
      <t>NFSv4.2 does implement NFSv4.1 ACLs, which are enforced on the
server and not the client. As such, ACL enforcement requires the
client to bypass the dirent cache to have checks done when a new
user attempts to access the dirent.</t>
      <t>Another consideration is that not all server implementations natively
support SMB. Instead, they layer Samba on top of the NFSv4.2 service.
The attributes of hidden, system, and offline have already been
introduced in the NFSv4.2 protocol to support Samba.  The Samba
implementation can utilize these attributes to provide SMB semantics.
While private protocols can supply these features, it is better to
drive them into open standards.</t>
      <t>Another concept that can be adapted from SMB is that of ABE If a
a directory has ABE enabled, then the user can only see the
files and sub-directories for which they have permissions.</t>
      <t>Under the POSIX model, this can be done on the client and not the
server. However, that only works with uid, gid, and mode bits.  If
we consider identity mappings, ACLs, and server local policies,
then the determination of ABE and directory entry visibility is
best performed on the server.</t>
      <t>Since cached dirents are shared by all users on a client, and the
client cannot determine access permissions for individual dirents,
all users are presented with the same set of attributes.  To address
this, this document introduces the uncacheable dirent metadata
attribute.  This attribute advises the client not to cache directory
entry metadata for a file or directory object. Consequently, each
time a client queries for these attributes, the server's response
can be tailored to the specific user making the request.</t>
      <t>This attribute does not define behavior for positive or negative name
caching or for caching of LOOKUP results outside the scope of
directory-entry metadata returned by READDIR and related operations.</t>
      <t>Directory delegations do not address per-user directory-entry metadata
visibility and therefore cannot replace the semantics defined by
the uncacheable dirent metadata attribute.</t>
      <section anchor="sec_dirents">
        <name>Uncacheable Directory-Entry Metadata</name>
        <t>If a file object or directory has the uncacheable dirent metadata attribute
set, the client is advised not to cache directory entry metadata.
In such cases, the client retrieves directory entry attributes from
the server for each request, allowing the server to evaluate access
permissions based on the requesting user.  Clients are advised not
to share cached dirent attributes between different users.</t>
        <t>Servers <bcp14>MUST</bcp14> assume that clients which do not query or set this
attribute may cache directory-entry metadata, and therefore <bcp14>MUST
NOT</bcp14> rely on this attribute for correctness unless client support
is confirmed.</t>
      </section>
    </section>
    <section anchor="xdr-for-uncacheable-dirents-attribute">
      <name>XDR for Uncacheable Dirents Attribute</name>
      <sourcecode type="xdr"><![CDATA[
///
/// typedef bool            fattr4_uncacheable_dirent_metadata;
///
/// const FATTR4_UNCACHEABLE_DIRENT_METADATA   = 88;
///
]]></sourcecode>
    </section>
    <section anchor="extraction-of-xdr">
      <name>Extraction of XDR</name>
      <t>This document contains the external data representation (XDR)
<xref target="RFC4506"/> description of the uncacheable dirent metadata attribute.  The XDR
description is presented in a manner that facilitates easy extraction
into a ready-to-compile format. To extract the machine-readable XDR
description, use the following shell script:</t>
      <sourcecode type="shell"><![CDATA[
#!/bin/sh
grep '^ *///' $* | sed 's?^ */// ??' | sed 's?^ *///$??'
]]></sourcecode>
      <t>For example, if the script is named 'extract.sh' and this document is
named 'spec.txt', execute the following command:</t>
      <sourcecode type="shell"><![CDATA[
sh extract.sh < spec.txt > uncacheable_prot.x
]]></sourcecode>
      <t>This script removes leading blank spaces and the sentinel sequence '///'
from each line. XDR descriptions with the sentinel sequence are embedded
throughout the document.</t>
      <t>Note that the XDR code contained in this document depends on types from
the NFSv4.2 nfs4_prot.x file (generated from <xref target="RFC7863"/>).  This includes
both nfs types that end with a 4, such as offset4, length4, etc., as
well as more generic types such as uint32_t and uint64_t.</t>
      <t>While the XDR can be appended to that from <xref target="RFC7863"/>, the code snippets
should be placed in their appropriate sections within the existing XDR.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>For a given user A, a client <bcp14>MUST NOT</bcp14> make access decisions for
uncacheable dirents retrieved for another user B. These decisions
<bcp14>MUST</bcp14> be made by the server.  If the client is Labeled NFS aware
(<xref target="RFC7204"/>), then the client <bcp14>MUST</bcp14> locally enforce the MAC security
policies.</t>
      <t>The uncacheable dirent metadata attribute allows dirents to be annotated
such that attributes are presented to the user based on the server's
access control decisions.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC4506">
          <front>
            <title>XDR: External Data Representation Standard</title>
            <author fullname="M. Eisler" initials="M." role="editor" surname="Eisler"/>
            <date month="May" year="2006"/>
            <abstract>
              <t>This document describes the External Data Representation Standard (XDR) protocol as it is currently deployed and accepted. This document obsoletes RFC 1832. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="67"/>
          <seriesInfo name="RFC" value="4506"/>
          <seriesInfo name="DOI" value="10.17487/RFC4506"/>
        </reference>
        <reference anchor="RFC4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <author fullname="R. Shirey" initials="R." surname="Shirey"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="FYI" value="36"/>
          <seriesInfo name="RFC" value="4949"/>
          <seriesInfo name="DOI" value="10.17487/RFC4949"/>
        </reference>
        <reference anchor="RFC7204">
          <front>
            <title>Requirements for Labeled NFS</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>This memo outlines high-level requirements for the integration of flexible Mandatory Access Control (MAC) functionality into the Network File System (NFS) version 4.2 (NFSv4.2). It describes the level of protections that should be provided over protocol components and the basic structure of the proposed system. The intent here is not to present the protocol changes but to describe the environment in which they reside.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7204"/>
          <seriesInfo name="DOI" value="10.17487/RFC7204"/>
        </reference>
        <reference anchor="RFC7862">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 2 Protocol</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document describes NFS version 4 minor version 2; it describes the protocol extensions made from NFS version 4 minor version 1. Major extensions introduced in NFS version 4 minor version 2 include the following: Server-Side Copy, Application Input/Output (I/O) Advise, Space Reservations, Sparse Files, Application Data Blocks, and Labeled NFS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7862"/>
          <seriesInfo name="DOI" value="10.17487/RFC7862"/>
        </reference>
        <reference anchor="RFC7863">
          <front>
            <title>Network File System (NFS) Version 4 Minor Version 2 External Data Representation Standard (XDR) Description</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides the External Data Representation (XDR) description for NFS version 4 minor version 2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7863"/>
          <seriesInfo name="DOI" value="10.17487/RFC7863"/>
        </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>
        <reference anchor="RFC8178">
          <front>
            <title>Rules for NFSv4 Extensions and Minor Versions</title>
            <author fullname="D. Noveck" initials="D." surname="Noveck"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document describes the rules relating to the extension of the NFSv4 family of protocols. It covers the creation of minor versions, the addition of optional features to existing minor versions, and the correction of flaws in features already published as Proposed Standards. The rules relating to the construction of minor versions and the interaction of minor version implementations that appear in this document supersede the minor versioning rules in RFC 5661 and other RFCs defining minor versions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8178"/>
          <seriesInfo name="DOI" value="10.17487/RFC8178"/>
        </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="RFC9754">
          <front>
            <title>Extensions for Opening and Delegating Files in NFSv4.2</title>
            <author fullname="T. Haynes" initials="T." surname="Haynes"/>
            <author fullname="T. Myklebust" initials="T." surname="Myklebust"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>The Network File System v4 (NFSv4) allows a client to both open a file and be granted a delegation of that file. This delegation provides the client the right to authoritatively cache metadata on the file locally. This document presents several extensions for both opening the file and delegating it to the client. This document extends NFSv4.2 (see RFC 7863).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9754"/>
          <seriesInfo name="DOI" value="10.17487/RFC9754"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MS-ABE" target="https://techcommunity.microsoft.com/blog/askds/access-based-enumeration-abe-concepts-part-1-of-2/400435">
          <front>
            <title>Access-Based Enumeration (ABE) Concepts</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
        <reference anchor="MS-SMB2" target="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/">
          <front>
            <title>Server Message Block (SMB) Protocol Versions 2 and 3</title>
            <author>
              <organization>Microsoft Corporation</organization>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Microsoft" value="MS-SMB2"/>
        </reference>
        <reference anchor="POSIX.1">
          <front>
            <title>The Open Group Base Specifications Issue 7</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2013"/>
          </front>
          <seriesInfo name="IEEE Std 1003.1, 2013 Edition" value=""/>
        </reference>
        <reference anchor="RFC1813">
          <front>
            <title>NFS Version 3 Protocol Specification</title>
            <author fullname="B. Callaghan" initials="B." surname="Callaghan"/>
            <author fullname="B. Pawlowski" initials="B." surname="Pawlowski"/>
            <author fullname="P. Staubach" initials="P." surname="Staubach"/>
            <date month="June" year="1995"/>
            <abstract>
              <t>This paper describes the NFS version 3 protocol. This paper is provided so that people can write compatible implementations. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1813"/>
          <seriesInfo name="DOI" value="10.17487/RFC1813"/>
        </reference>
        <reference anchor="Samba" target="https://www.samba.org/">
          <front>
            <title>Samba Project</title>
            <author>
              <organization>Samba Team</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 339?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Trond Myklebust, Mike Snitzer, Jon Flynn, Keith Mannthey, and Thomas
Haynes all worked on the prototype at Hammerspace.</t>
      <t>Rick Macklem, Chuck Lever, and Dave Noveck reviewed the document.</t>
      <t>Chris Inacio, Brian Pawlowski, and Gorry Fairhurst helped guide
this process.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
