<?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-03" 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-03"/>
    <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 63?>

<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 76?>

<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 87?>

<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>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, which
is commonly used to control the visibility of directory entries.
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 document introduces the uncacheable dirent metadata attribute
to NFSv4.2 to allow servers to advise clients that caching of
directory-entry metadata is unsuitable.  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>The fattr4_uncacheable_file_data attribute is a read-write file
attribute and has a data type of boolean.  The attribute is not set
on individual file objects and applies only to directory-entry
metadata returned from the directory on which it is set.</t>
      <t>The uncacheable dirent metadata attribute 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>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
(<xref target="I-D.ietf-nfsv4-uncacheable-files"/>) attribute by ensuring
directory-entry metadata correctness. The two attributes address
distinct aspects of client-side caching: one governs caching of
file data, while the other governs caching of directory-entry
metadata.</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>The fattr4_uncacheable_file_data attribute is a read-write boolean
attribute that applies on a per-file basis to regular files (NF4REG).
Authorization to query or modify this attribute is governed by
existing NFSv4.2 authorization mechanisms.</t>
        <t>If a directory object 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>The uncacheable dirent metadata attribute does not modify the
semantics of the NFSv4.2 change attribute.  Clients <bcp14>MUST</bcp14> continue to
use the change attribute to detect directory modifications and to
determine when directory contents may have changed, even when
directory-entry metadata caching is suppressed.  Suppressing caching
of directory-entry metadata does not remove the need for change-based
validation.</t>
        <t>Servers <bcp14>SHOULD</bcp14> assume that clients which do not query or set this
attribute may cache directory-entry metadata, and therefore <bcp14>SHOULD
NOT</bcp14> rely on this attribute for correctness unless client support
is confirmed.</t>
        <t>Authorization to set or modify this attribute is governed by existing
NFSv4.2 authorization mechanisms.</t>
        <t>If a client holds a directory delegation for a directory that becomes
marked with the uncacheable dirent metadata attribute, the server is
expected to ensure that the client observes the updated attribute
value.  A server <bcp14>MAY</bcp14> recall an existing directory delegation in order
to enforce the semantics of this attribute.  Clients that observe the
attribute set while holding a directory delegation <bcp14>MUST</bcp14> ensure that
directory-entry metadata is not cached inconsistently with the
attribute semantics.</t>
        <t>Because this attribute provides advisory guidance rather than mandatory
access control, servers cannot rely on client compliance for security
enforcement in adversarial environments.</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>This attribute is not intended to provide a security boundary or to
replace server-enforced access control.  Its primary purpose is to
improve correctness and interoperability in environments where
directory-entry metadata visibility varies across users or protocols.
Servers <bcp14>MUST NOT</bcp14> rely on this mechanism alone to prevent unauthorized
access to directory entries.</t>
      <t>Authorization to set or modify the fattr4_uncacheable_file_data
attribute is governed by existing NFSv4.2 authorization mechanisms.
Servers <bcp14>MAY</bcp14> restrict modification of this attribute based on local
policy, file ownership, or access control rules.  This document does
not define a new authorization model.</t>
      <t>The discussion of users in this section is independent of the
specific user identity representation employed by the client or
server.  This document does not distinguish between users identified
via NFSv4.2 user@domain strings, RPC authentication identities, or
local operating system user identifiers.  The uncacheable dirent
metadata attribute does not alter NFSv4.2 authentication or
authorization semantics and does not depend on any particular user
identity model.</t>
      <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 concerns described above primarily apply to multi-user clients
that cache directory-entry metadata on behalf of multiple users.
Single-user clients may not be subject to these risks, but the
attribute semantics remain the same regardless of client usage
model.</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="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="I-D.ietf-nfsv4-uncacheable-files">
          <front>
            <title>Adding an Uncacheable File Data Attribute to NFSv4.2</title>
            <author fullname="Thomas Haynes" initials="T." surname="Haynes">
              <organization>Hammerspace</organization>
            </author>
            <date day="13" month="January" year="2026"/>
            <abstract>
              <t>   Network File System version 4.2 (NFSv4.2) clients commonly perform
   client-side caching of file data in order to improve performance.  On
   some systems, applications may influence client data caching
   behavior, but there is no standardized mechanism for a server or
   administrator to indicate that particular file data should not be
   cached by clients for reasons of performance or correctness.  This
   document introduces a new file data caching attribute for NFSv4.2.
   Files marked with this attribute are intended to be accessed with
   client-side caching of file data suppressed, in order to support
   workloads that require predictable data visibility.  This document
   extends NFSv4.2 (see RFC7862).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-nfsv4-uncacheable-files-03"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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>
        <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 402?>

<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>
