<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
]>

<rfc category="std" ipr="full3978" docName="draft-everhart-nfsv4-namespace-via-dns-srv-02.txt">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc tocompact="yes" ?>
<?rfc tocdepth="3" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<!-- these two save paper: start new paragraphs from the same page etc. -->
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>


    <front>
        <title abbrev="NFSv4 Global Name Space with DNS SRV">
		Using DNS SRV to Specify a Global File Name Space with NFS version 4
	  </title>
        <author initials='C' surname="Everhart" fullname='Craig Everhart'>
            <organization>
		Network Appliance, Inc.
		</organization>
		<address>
		<postal>
			<street>7301 Kit Creek Road</street>
			<street>P.O. Box 13917</street>
			<city>Research Triangle Park</city> <region>NC</region>
			<code>27709</code>
			<country>US</country>
		</postal>
		<phone>+1 919 476 5320</phone>
		<email>everhart@netapp.com</email>
		</address>
        </author>
	  <author initials="W.A." surname="Adamson" fullname='Andy Adamson'>
		<organization>CITI, University of Michigan</organization>
		<address>
		<postal>
			<street>CITI, 3rd Floor Argus</street>
			<street>535 W. William Street</street>
			<city>Ann Arbor</city> <region>MI</region>
			<code>48103</code>
			<country>US</country>
		</postal>
		<phone>+1 734 764 9465</phone>
		<email>andros@umich.edu</email>
		</address>
	  </author>
	  <author initials='J' surname="Zhang" fullname='Jiaying Zhang'>
		<organization>University of Michigan</organization>
		<address>
		<postal>
			<street>535 W. William Street, Suite 3100</street>
			<city>Ann Arbor</city> <region>MI</region>
			<code>48103</code>
			<country>US</country>
		</postal>
		<phone>+1 734 647 4216</phone>
		<email>jiajingz@umich.edu</email>
		</address>
	  </author>

        <date month="November" year="2007"/>
        <abstract><t>
The NFS version 4 protocol provides a natural way for a collection of NFS file servers to collaborate
in providing an organization-wide file name space.  The DNS SRV RR allows a simple and appropriate 
way for an organization to publish the root of its name space, even to clients that might not be
intimately associated with such an organization.  DNS SRV can be used to join these organization-wide
file name spaces together to allow construction of a global, uniform NFS version 4 file name space.
This document refreshes the draft.
</t></abstract>
    </front>

    <middle>
        <section title="Requirements notation">
            <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
            "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
            and "OPTIONAL" in this document are to be interpreted as
            described in <xref target="RFC2119"/>.</t>
        </section>

	  <section title="Background">
		<t>
With the advent of fs_locations attributes in the NFS Version 4 protocol <xref target="RFC3530" />, NFS servers can
cooperate to build a file name space that crosses server boundaries, as detailed in the description
of referrals in <xref target="NB0510" />.
With NFS Version 4 referrals, a file server may indicate to its client that the file system name tree beneath
a given name in the server is not present on itself, but is represented by a filesystem in some other
set of servers.  The mechanism
is general, allowing servers to describe any filesystem as being reachable by requests to any of a
set of servers.
Thus, starting with a single NFS Version 4 server, using these referrals, an NFS Version 4 client
might be able to see a large name space associated with a collection of interrelated NFS Version 4 file servers.  An organization could use this
capability to construct a uniform file name space for itself.
</t><t>
An organization might wish to publish the starting point for this name space to its clients.  In many
cases, the organization will want to publish this starting point to a broader set of possible clients.
At the same time, it is useful to require clients to know only the smallest amount
of information in order to locate the appropriate name space.
Simultaneously, that required
information should be constant through the life of an organization if the clients are not to require
reconfiguration as administrative events change, for instance, a server's name or address.
		</t>
	  </section>

	  <section title="Proposed Use of SRV Resource Record in DNS">
<t>
Providing an organization's published file system name space is a service, and it is appropriate
to use the DNS <xref target="RFC1035" /> to locate it.  
As with the AFSDB resource record type <xref target="RFC1183" />, the client need only utter the
(relatively) constant domain name for an organization in order to locate its file system name space service.
Once a client uses the DNS to locate one or more servers for the root of the organization's name space,
it can use the standard NFS Version 4 mechanisms to navigate the remainder of the NFS servers for that
organization.  The use of this proposed mechanism results in a useful cross-organizational name space,
just as in AFS <xref target="AFS" /> and DCE/DFS <xref target="DFS" /> before it.  A client need
know only the name of the organization
in order to locate the file system name space published by that organization.
</t><t>
<figure>
<preamble>
We propose the use of the DNS SRV resource record type [RFC2782] to fulfill this function.  The
format of the DNS SRV record is as follows:
</preamble>
<artwork>
   _Service._Proto.Name TTL Class SRV Priority Weight Port Target
</artwork>
<postamble>
In our case, we use a Service name of "nfs4" and a conventional Protocol of "_tcp".
The Target fields
give the domain names of the NFS Version 4 servers that export root filesystems.  An NFS Version 4 client
SHOULD interpret any of the exported pseudo-root filesystems as the filesystem published by the organization
with the given domain name.
</postamble> </figure>
</t><t>
<figure>
<preamble>
Suppose a client wished to locate the root of the file system published by organization example.net.  The
DNS servers for the domain could publish records like
</preamble><artwork>
   _nfs4._tcp IN SRV 0 0 2049 nfs1tr.example.net
   _nfs4._tcp IN SRV 1 0 2049 nfs2ex.example.net
</artwork><postamble>
The result domain names nfs1tr.example.net and nfs2ex.example.net indicate NFS Version 4 file servers that
export the root of the published name space for the example.net domain.  In accordance with RFC 2782,
these records are to be interpreted using the Priority and Weight field values, selecting an appropriate
file server with which to begin a network conversation.  Subsequent accesses are carried out in accordance
with ordinary NFS Version 4 protocol.
</postamble></figure>
</t>
	<section title="Deployment of the Resource Record">
<t>
As with any DNS resource, any server installation needs to concern itself with the likely loads and effects
of the presence of the resource record.  The answers to requests for RRs might differ depending on what the
server can tell about the client.  For example, some RRs might be returned only to those clients
inside some network perimeter (to provide an intranet service) and requests from other clients might be denied.
As the RR directs the clients to ask for service from a given set of servers, the administrator should ensure that
the identified servers can handle the expected load.  Fortunately, the definition of the DNS SRV resource
record offers a mechanism to distribute the load to multiple servers within a priority ordering.
</t>
	</section>
<t>
</t>
	  </section>

	  <section title="Integration with Use of NFS Version 4">
<t>
There are at least two remaining questions: whether this DNS SRV record evaluation is done in the NFS server
or client, and also how the domain names of the organizations are passed to client or server.  A third question
is how this might produce a uniform global file name space, and what prefix should be used for such
file names.
</t><t>
This specification anticipates that these SRV records will most commonly be used to define the second directory
level in an inter-organizational file name space.  This directory will be populated with
domain names pointing to the file systems published for use under those domain names.
Thus, the root directory for the file system published
by example.net will effectively be mounted underneath the example.net name in a second-level directory.
</t><t>
In general, a domain name will appear to a client as a directory name pointing to the root directory of the file system
published by the organization responsible for that domain name. 
</t>
		<section title="Globally-useful names: conventional mount point">
<t>
<figure>
<preamble>
For the inter-organizational name space to be a global name space, it is useful for its mount point
in local systems to be uniform as well.  The name /nfs4/ SHOULD be used so that names on one machine will
be directly usable on any machine.  Thus, the example.net published file system would be accessible as
</preamble><artwork>
	/nfs4/example.net/
</artwork><postamble>
on any client.  Using this convention, "/nfs4/" is a mount for a special file system that is populated with
the results of SRV record lookups.
</postamble></figure>
</t>
		</section>

		<section title="Mount options">
<t>
SRV records are necessarily less complete than the information in the existing NFS Version 4 attributes fs_locations
and the proposed fs_locations_info.  For the rootpath field of fs_location,
we assume that the empty string is adequate.  Thus,
the servers listed as targets for the SRV resource records should export the root of the organization's published
file system as the pseudo-root in its exported namespace.
</t><t>
As for the other attributes in fs_locations_info, the recommended approach is for a client to make its first possible
contact with any of the referred-to servers, obtain the fs_locations_info structure from that server, and use the
information from that obtained structure as the basis for its judgment of whether it would be better to use a
different server representative from the set of servers for that filesystem.
</t><t>
We recommend, though, that the process of mounting an organization's name space should permit the use
of what is likely to impose the lowest cost on the server.  Thus, we recommend that the client not insist
on using a writable copy of the filesystem if read-only copies exist, or a zero-age copy rather than a
copy that may be a little older.  We presume that the organization's file name space can be navigated
to provide access to higher-cost properties such as writability or currency as necessary, but that the default
use when navigating to the base information for an organization ought to be as low-overhead as possible.
</t><t><figure><preamble>
One extension of this rule that we might choose to inherit from AFS, though, is to give a special meaning
to the domain name of an organization preceded by a period (".").  It might be reasonable to have names
mounting the filesystem for a period-prefixed domain name (e.g., ".example.net") attempt to mount only a
read-write instance of that organization's root filesystem, rather than permitting the use of read-only
instances of that filesystem.  Thus,
</preamble><artwork>
	/nfs4/example.net/users
</artwork></figure>
might be a directory in a read-only instance of the root filesystem of the organization "example.net", while
<figure><artwork>
	/nfs4/.example.net/users
</artwork><postamble>
would be a writable form of that same directory.  A small benefit of following this convention is that
names with the period prefix are treated as "hidden" in many operating systems, so that the visible name
remains the lowest-overhead name.
</postamble></figure>
</t>
		</section>
	  <section title="File system integration issues">
<t>
The result of the DNS search SHOULD appear as a (pseudo-)directory in the client name space, cached for a time no longer than the RR's TTL.
A further refinement is advisable, and SHOULD be deployed: that only fully-qualified domain names appear as directories.  That is, in many environments, DNS names may be abbreviated from their fully-qualified form.  In such circumstances, multiple names might be given to file system code that all resolve to the same DNS SRV RRs.  The abbreviated form SHOULD be represented in the client's name space cache as a symbolic link, pointing to the fully-qualified name, case-canonicalized when appropriate.  This will allow pathnames obtained with, say, getcwd() to include the DNS name that is most likely to be usable
outside the scope of any particular DNS abbreviation convention.
</t>
	  </section>
	  </section>

	  <section title="Where is this integration carried out?">
<t>
Another consideration is what agent should be responsible for interpreting the SRV records.  It could be done 
just as well by the client or by the server, though we expect that most clients will include this function themselves.  
Using something like Automounter <xref target="AMD" /> technology, the client would be responsible
for interpreting names under a particular directory, discovering the appropriate filesystem to mount, and mounting
it in the appropriate place in the client name space before returning control to the application doing a lookup.
Alternatively, one could imagine the existence of an NFS version 4 server that awaited similar domain-name lookups,
then consulted the DNS SRV records to determine the servers for the indicated published file system, and then returned
that information via NFS Version 4 attributes as a referral in the way outlined
by Noveck and Burnett <xref target="NB0510" />.
In either case, the result of the DNS lookup should be cached (obeying TTL) so
that the result could be returned more quickly the next time.
</t><t>
We strongly suggest that this functionality be implemented by NFS clients.  While we recognize that it would be possible to configure clients so that they relied on a specially-configured server to do their SRV lookups for them, we feel that such a requirement would impose unusual dependencies and vulnerabilities for the deployers of such clients.
</t>
	  </section>

	  <section title="Relationship to DNS NFS4ID RR">
<t>
This DNS use has no obvious relationship to the NFS4ID RR.  The NFS4ID RR is a mechanism to help
clients and servers configure themselves with respect to the domain strings used in "who" strings
in ACL entries and in owner and group names.
The authentication/authorization domain string of a server need have no
direct relationship to the name of the organization that is publishing a file name space of which
this server's filesystems form a part.  At the same time, it might be seen as straightforward or
normal for such a server to refer to the ownership of most of its files using a domain string with
an evident relationship to that NFS4ID-given domain name, but this document imposes no such requirement.
</t>
	  </section>

        <section title="Security Considerations">
<t>
Naive use of the DNS may effectively give clients published server referrals that are intrusive substitutes
for the servers intended by domain administrators.
</t><t>
It may be possible to build a trust chain by using DNSSEC <xref target="RFC4033" /> to implement
this function on the client, or by
implementing this function on an NFS Version 4 server that uses DNSSEC and maintaining a trust relationship with that
server.  This trust chain also breaks if the SRV interpreter accepts responses from insecure DNS zones.
Thus, it would likely be prudent also to use domain-based service principal names for the servers for the
root filesystems as indicated as the targets of the SRV records.
The idea here is that one wants to authenticate {nfs, domainname, host.fqdn}, not simply {nfs, host.fqdn}, when the
server is a domain's root file server obtained through an insecure DNS SRV RR lookup.  The domain
administrator can thus ensure that only domain root NFSv4 servers have credentials for such domain-based
service principal names.
</t><t>
Domain-based service principal names are being proposed in the KITTEN WG <xref target="KITTEN" /> .
</t>
        </section>
    </middle>

    <back>

<references title="Normative References">

  <reference anchor='RFC2119'>
      <front>
      <title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
      <author initials='S.' surname='Bradner' fullname='Scott Bradner'>
      <organization>Harvard University</organization>
      <address>
      <postal>
      <street>1350 Mass. Ave.</street>
      <street>Cambridge</street>
      <street>MA 02138</street></postal>
      <phone>- +1 617 495 3864</phone>
      <email>sob@harvard.edu</email></address></author>
      <date year='1997' month='March' />
      </front>
    </reference>

    <reference anchor="RFC3530">
	  <front>
      <title>Network File System (NFS) version 4 Protocol</title>
	  <author initials="S." surname="Shepler" fullname="S. Shepler">
        <organization>Sun Microsystems, Inc.</organization>
      </author>
	  <author initials="B." surname="Callaghan" fullname="B. Callaghan">
        <organization>Sun Microsystems, Inc.</organization>
      </author>
	  <author initials="D." surname="Robinson" fullname="D. Robinson">
        <organization>Sun Microsystems, Inc.</organization>
      </author>
	  <author initials="R." surname="Thurlow" fullname="R. Thurlow">
        <organization>Sun Microsystems, Inc.</organization>
      </author>
	  <author initials="C." surname="Beame" fullname="C. Beame">
        <organization>Hummingbird, Ltd.</organization>
      </author>
	  <author initials="M." surname="Eisler" fullname="M. Eisler">
        <organization>Network Appliance, Inc.</organization>
      </author>
	  <author initials="D." surname="Noveck" fullname="D. Noveck">
        <organization>Network Appliance, Inc.</organization>
      </author>
      <date year="2003" month="April" />
      </front>
      <seriesInfo name="RFC" value="3530"/>
      <format type="TXT" octets="600988" 
       target="ftp://ftp.isi.edu/in-notes/rfc3530.txt"/>
    </reference>

  <reference anchor="RFC1034">
	<front>
		<title>Domain Names - Concepts and Facilities</title>
		<author initials="P.V." surname="Mockapetris" fullname="Paul Mockapetris">
		<organization />
		</author>
		<date month="November" year="1987" />
	</front>
	<seriesInfo name="RFC" value="1034" />
	<format type="TXT" octets="129180"
	 target="http://www.ietf.org/rfc/rfc1034.txt" />
  </reference>

  <reference anchor="RFC1035">
	<front>
		<title>Domain Names - Implementation and Specification</title>
		<author initials="P.V." surname="Mockapetris" fullname="Paul Mockapetris">
		<organization />
		</author>
		<date month="November" year="1987" />
	</front>
	<seriesInfo name="RFC" value="1035" />
	<format type="TXT" octets="125626"
	 target="http://www.ietf.org/rfc/rfc1034.txt" />
  </reference>

  <reference anchor="RFC2782">
	<front>
		<title>A DNS RR for specifying the location of services (DNS SRV)</title>
		<author initials="A." surname="Gulbrandsen" fullname="Arnt Gulbrandsen">
			<organization>Troll Technologies</organization>
		</author>
		<author initials="P." surname="Vixie" fullname="Paul Vixie">
			<organization>Internet Software Consortium</organization>
		</author>
		<author initials="L." surname="Esibov" fullname="Levon Esibov">
			<organization>Microsoft Corporation</organization>
		</author>
		<date month="February" year="2000" />
	</front>
	<seriesInfo name="RFC" value="2782" />
	<format type="TXT" octets="24013"
	 target="http://www.ietf.org/rfc/rfc2782.txt" />
  </reference>

  <reference anchor="RFC4033">
	<front>
		<title>DNS Security Introduction and Requirements</title>
		<author initials="R." surname="Arends" fullname="Roy Arends">
			<organization>Telematica Institut</organization>
		</author>
		<author initials="R." surname="Austein" fullname="Rob Austein">
			<organization abbrev="ISC">Internet Systems Consortium</organization>
		</author>
		<author initials="M." surname="Larson" fullname="Matt Larson">
			<organization abbrev="VeriSign">VeriSign, Inc.</organization>
		</author>
		<author initials="D." surname="Massey" fullname="Dan Massey">
			<organization>Colorado State University</organization>
		</author>
		<author initials="S." surname="Rose" fullname="Scott Rose">
			<organization abbrev="NIST">National Institute for Standards and Technology</organization>
		</author>
		<date month="March" year="2005" />
	</front>
	<seriesInfo name="RFC" value="4033" />
	<format type="TXT" octets="52445"
	 target="http://www.ietf.org/rfc/rfc4033.txt" />
  </reference>

</references>
 

<references title="Informative References">

  <reference anchor="NB0510"
		 target="ftp://www.ietf.org/internet-drafts/draft-noveck-nfsv4-migrep-00.txt">
	<front>
		<title>Next Steps for NFSv4 Migration/Replication</title>
		<author initials="D." surname="Noveck" fullname="David Noveck">
			<organization abbrev="NetApp">Network Appliance, Inc.</organization>
		</author>
		<author initials="R.C." surname="Burnett" fullname="Rodney C. Burnett">
			<organization abbrev="IBM">IBM, Inc.</organization>
		</author>
		<date month="October" year="2005" />
	</front>
  </reference>
 
  <reference anchor="DFS">
	<front>
		<title>DEcorum File System Architectural Overview</title>
		<author initials="M.L." surname="Kazar" fullname="Michael L. Kazar">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="B.W." surname="Leverett" fullname="Bruce W. Leverett">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="O.T." surname="Anderson" fullname="Owen T. Anderson">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="V." surname="Apostolides" fullname="Vasilis Apostolides">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="B.A." surname="Bottos" fullname="Beth A. Bottos">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="S." surname="Chutani" fullname="Sailesh Chutani">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="C.F." surname="Everhart" fullname="Craig F. Everhart">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="W.A." surname="Mason" fullname="W. Anthony Mason">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="S.-T." surname="Tu" fullname="Shu-Tsui Tu">
			<organization>Transarc Corporation</organization>
		</author>
		<author initials="E.R." surname="Zayas" fullname="Edward R. Zayas">
			<organization>Transarc Corporation</organization>
		</author>
		<date month="June" year="1990" />
	</front>
     <seriesInfo name="Proc. USENIX Summer Conf." value="Anaheim, Calif." />
  </reference>

  <reference anchor="AMD"
		 target="http://docs.freebsd.org/info/amdref/amdref.pdf">
	<front>
	  <title>Amd: The 4.4 BSD Automounter Reference Manual</title>
	  <author initials="J.-S." surname="Pendry" fullname="Jan-Simon Pendry">
		<organization>Imperial College of Science, London</organization>
	  </author>
	  <author initials="N." surname="Williams" fullname="Nick Williams">
		<organization>Imperial College of Science, London</organization>
	  </author>
	  <date month="March" year="1991" />
	</front>
  </reference>

  <reference anchor="KITTEN"
		 target="http://ietf.org/html.charters/kitten-charter.html">
	<front>
	<title>GSS-API Next Generation</title>
	  <author fullname="KITTEN working group">
		<organization>IETF</organization>
	  </author>
	<date month="October" year="2005" />
	</front>
  </reference>

  <reference anchor="RFC1183">
	<front>
      <title>New DNS RR Definitions</title>
	<author initials="C.F." surname="Everhart" fullname="Craig F. Everhart">
		<organization abbrev="Transarc">Transarc Corporation</organization>
	</author>
	<author initials="L.A." surname="Mamakos" fullname="Louis A. Mamakos">
		<organization abbrev="UMD">University of Maryland</organization>
	</author>
	<author initials="R." surname="Ullmann" fullname="Robert Ullmann">
		<organization abbrev="Prime">Prime Computer, Inc.</organization>
	</author>
	<author initials="P." surname="Mockapetris" fullname="Paul Mockapetris">
		<organization abbrev="ISI">USC Information Sciences Institute</organization>
	</author>
	<date month="October" year="1990" />
	</front>
	<seriesInfo name="RFC" value="1183" />
	<format type="TXT" octets="23788" target="http://www.ietf.org/rfc/rfc1183.txt" />
  </reference>

  <reference anchor="AFS">
	<front>
		<title>An Overview of the Andrew File System"</title>
		<author initials="J.H." surname="Howard" fullname="John H. Howard">
		  <organization abbrev="CMU ITC">"Carnegie Mellon University, Information Technology Center"</organization>
		</author>
		<date month="February" year="1988" />
	</front>
	<seriesInfo name="Proc. USENIX Winter Tech. Conf." value="Dallas" />
  </reference>

</references>

    </back>

</rfc>

