Subject: [nfsv4] A draft on the global namespace problem

From: Chenggong Charles Fan <[email-masked]>
Date: Mon, 08 Nov 2004 16:50:57 -0800

Hi,

Attached is a slightly updated draft of the global namespace problem.

Thanks,
Charles
INTERNET-DRAFT                                       C. Charles Fan
Expires: April 2005                                      Rainfinity

                                                       October 2004

                 NFSv4 Global Namespace Requirements
         draft-fan-nfsv4-global-namespace-requirements-00.txt

Status of this Memo

     By submitting this Internet-Draft, I certify that any applicable
     patent or other IPR claims of which I am aware have been disclosed,
     or will be disclosed, and any of which I become aware will be
     disclosed, in accordance with RFC 3668.

     Internet-Drafts are working documents of the Internet Engineering
     Task Force (IETF), its areas, and its working groups.  Note that
     other groups may also distribute working documents as Internet-
     Drafts.

     Internet-Drafts are draft documents valid for a maximum of six
     months and may be updated, replaced, or obsoleted by other
     documents at any time.  It is inappropriate to use Internet-Drafts
     as reference material or to cite them other than as "work in
     progress."

     The list of current Internet-Drafts can be accessed at
         http://www.ietf.org/ietf/1id-abstracts.txt The list of
     Internet-Draft Shadow Directories can be accessed at
         http://www.ietf.org/shadow.html.

Copyright Notice

     Copyright (C) The Internet Society (2004).  All Rights Reserved.

Abstract

Table of Contents

     1.    Introduction . . . . . . . . . . . . . . . . . . . . . . 1
     2.    Scope  . . . . . . . . . . . . . . . . . . . . . . . . . 2
     3.    Requirements . . . . . . . . . . . . . . . . . . . . . . 3
     4.    Architecture . . . . . . . . . . . . . . . . . . . . . . 3
     5.    Work Items . . . . . . . . . . . . . . . . . . . . . . . 4
           Acknowledgements . . . . . . . . . . . . . . . . . . . . 4
           Normative References . . . . . . . . . . . . . . . . . . 4
           Author's Address . . . . . . . . . . . . . . . . . . . . 5
           Full Copyright Statement . . . . . . . . . . . . . . . . 5

1. Introduction

     Global Namespace has been raised as one of the desired features of 
     NFSv4. RFC3530 specifies support for NFS4ERR_MOVED error code, the 
     fs_location attribute, and the volatile file handles.  These 
     specifications provide the possibility of implementing NFSv4 global 
     namespace solutions within the RFC3530 spec.  

     There has not been a document that defines what is the global 
     namespace for NFSv4, What problems it intends to solve, or what 
     requirements it needs to meet.  Some have mentioned as references 
     existing namespace solutions in NFS v2/v3, CIFS and AFS.  For 
     example in NFS v2/v3 there are automounter-based solutions.  CIFS 
     includes specification of Dfs links that supports the deployment of 
     Dfsroot namespace server.  AFS can dynamically map its volumes to 
     different physical locations by the use of Volume Location Database 
     (VLDB).  The functionalities of each of these solutions vary.  

     The goal of this draft is to define what's the scope and the 
     requirements of the global namespace for NFSv4.  The document will 
     also list some architecture alternatives, and propose a list of work 
     items to start tackling this problem.

2. Scope

     There are at least three different kind of namespaces that had been 
     referred to as global namespace for file storage:

     1. Intra-cluster namespace.  This is the unified namespace for all 
        NAS servers in a tightly-coupled or aggregated cluster.  People 
        refer to it as "global" namespaces, as opposed to the "local" 
        namespace of each node in the cluster.  Many proprietary intra-
        cluster namespace schemes exist today as part of vendor solutions.

     2. Enterprise namespace.  This is the most requested form of "global 
        namespace" from the enterprise storage administrators.  An 
        enterprise namespace provides a uniform view into the network file 
        storage for the entire enterprise.  

     3. World-wide namespace.  This makes possible the "world-wide NFS", 
        with a global URL to each file.  This could be achieved by an 
        extension of the enterprise namespace scheme.

     This draft focuses on the enterprise namespace.  Enterprise file 
     storage environment will continue to grow and continue to be 
     heterogeneous.  Standardization supports the interoperability 
     between different vendors, and having a standards-based namespace 
     solution for NFSv4 will help the wide adoption of the protocol.

3. Requirements

     What are the requirements for a enterprise-wide namespace?  Here is 
     a list of basic requirements:

     - Location Independent: The namespace tree is designed according to 
       business or logical divisions, independent of the physical location 
       of the data.  This implies that the namespace needs to maintain a 
       "map" or "location table" that links between the logical namespace 
       and the physical locations.

     - Uniform View: There should be a single map of the namespace that 
       all clients agree as authoritative.  This implies the existence of a 
       root server and/or central repository for an enterprise domain, but 
       does not imply that each client must mount into this unified 
       namespace in the same way.

     - Transparent: It is desired that when the physical location of the 
       data changes due to administrative reasons (either by migration or 
       replication), the namespace to the clients remain constant.  The 
       update of the namespace map entry can be achieved transparently to 
       the clients.  The client applications continue running, namespace 
       remain constant, while the data is now from a different physical 
       location.

     - Secure.  The deployment of a namespace solution must not 
       compromise the security of data access.  

     In addition to the above three requirements, there are more advanced 
     and/or detailed requirements:

     - Granularity of namespace mapping.  Whether the namespace mapping 
       can happen at the file system granularity, or directory granularity, 
       or file granularity, or sub-file granularity?

     - Hierarchical Mapping.  Is it possible for namespace entry /a/b to 
       link to filerA, while /a/b/c to link to filerB? 

     - Variable Support.  Depending on variables such as client OS, 
       client geographical location, or time-of-day, can the namespace 
       mapping be different?  It is critical to many customer environments.

     - Manageability.  Can the namespace be accessed and modified real-
       time by administrators? by applications? by user groups?  How fast 
       does a namespace mapping change propagate to all clients?

     - Cycle Prevention.  Will the namespace tree be guaranteed to be 
       acyclic?  

     - Multi-protocol Interoperability.  Will NFSv2 and v3 clients be 
       able to use this same namespace?  Will this namespace be 
       synchronized with the CIFS namespace?

     A viable global namespace solution will need to be location 
     independent, unified, transparent and secure.  It should also 
     consider the finer requirements to make itself an attactive solution 
     to the enterprise administrators.

4. Architecture

     In an email to the Work Group mailing list, David Robinson outlined 
     a taxonomy of three approaches how a global namespace solution can 
     be achieved.  They are "dumb server, smart client" (#1), "smart 
     server, dumb client" (#3), and "somewhere in-between" (#2).  

     For NFS v2/v3 environments, the most popular namespace solution 
     implemented is automounter daemon with automounter maps centrally 
     managed at NIS server or LDAP server.  This solution belongs to 
     category #1.  The popularity of this solution shows that it 
     addresses some of the namespace requirements outlined.  In 
     particular, it supports "location independent" requirement (at 
     export granularity), the "unified" requirement and the "secure" 
     requirement.  In addition, it supports hierarchical mapping and 
     wildcard variables.  Because there is no server to server redirect, 
     there is no cycle issues here either.  

     So why do some NFS enterprise users still ask for a "global 
     namespace"?  What is it lacking in an automounter-based solution?  
     Here is what I've heard from NFS administrators.  First the update 
     of the automounter map is not completely transparent.  Clients which 
     have applications running and keeping the old mount active will not 
     let go the old mount.  For some versions of some OS, even after the 
     mount become inactive, the old mount still won't be released, even 
     with "-f" option.  Dealing with the varieties of client OS's and 
     versions, this is a difficult problem to completely solve.

     Secondly the granularity of this solution is at export level.  For 
     some applications that require a global namespace, such as Load 
     Balancing, HSM (or more fashionably, ILM) applications, finer 
     granularity (directory, file, sub-file) is desired.  

     There has been good agreement that approach #3 (smart server, dumb 
     client) is a "best vendor win" solution, and out of scope for the 
     workgroup.  Category #2 becomes the interesting case where by v4 
     protocol enhancements over v2/v3 that make the client and server 
     both just a little bit smarter, a superior solution (in terms of 
     transparency, granularity, and possibly manageability) to the 
     current automounter/NIS/LDAP solution might be possible.

5. Work Items

     First, we should choose a central repository, such as LDAP, for the 
     namespace mappings.  We can work to define a standard schema for the 
     NFS namespace mappings.  This work is not part of the NFSv4 protocol 
     itself, but it's not too far-fetching for us to attempt it for an 
     NFS namespace.  There were suggestions of having this namespace to 
     support multi-protocol.  That might be too ambitious, since CIFS is 
     hardly under our control, and not even well documented.

     Second, we need to clarify the client-server interactions based on 
     the "right interpretations" of RFC 3530.  Dave Noveck has an I-D on 
     this topic. [Noveck]  I believe most immediately this is the most 
     challenging piece of work, with clarification needed in how to 
     implement this section of RFC3530 for both the migration case and 
     the pure referral case.  The security issues should also be 
     considered that the proposed scheme doesn't compromise existing 
     level of security.  The hope is that this challenge will be 
     overcome, and we'll be able to have the first client, server and 
     namespace server reference implementation of the most basic use of 
     the NFS4ERR_MOVED and fs_location.  

     Third, we should define a mechanism with which clients in the 
     enterprise know where to find the root for the NFS enterprise 
     namespace.  One simple solution is to leverage the DNS domain, and 
     set up a convention that the DNS name nfsroot always corresponds to 
     the root namespace server.  The root namespace server can refer 
     clients to other namespace servers.  Schemes should be designed to 
     enforce that the relationship between namespace servers is 
     hierarchical and not cyclical.  This scheme can be extended to 
     support world-wide NFS namespace as well.

     Fourth, backward compatibility with v2 and v3 is very important.  
     Automounters are able to access the central repository (LDAP or 
     else) to enforce the namespace mappings by mounting according to the 
     mappings.  The control should be in the administrator's hand how he 
     would like to configure the environment and how he would like the 
     clients access the namespace, either by client-based automounter, or 
     via accessing the namespace server.  There were comments that 
     allowing one namespace method is better than two, but in this case 
     allowing both might be necessary, for backward compatibility and 
     future enhancement.

     Fifth, with NFSv4.x clients accessing the namespace through the 
     namespace server via NFS protocol, it is then possible to enhance 
     the protocol in the form of minor versions to support better 
     transparency and finer granularity and better manageability.  
     Possible enhancements in 4.x that may worth some discussion include 
     file-level referrals, lifetime on file handles, additional client-
     server exchange of variable values, etc.

     If this is a workable architecture, perhaps we have the following 
     work items?

     1. NFSv4 Global Namespace Problem Statement
     2. Clarification on NFSv4 client-server ops involving NFS4ERR_MOVED 
        and fs_location.
     3. Best Practice in configuring NFSv4 enterprise namespace, 
	including nfsroot schemes.
     4. Proposal for NFSv4 minor version enhancements
     5. Proposal for database schema for NFS namespace
     6. Prototype implementation of the client, server and namespace 
        server.

Acknowledgements

     The author would like to thank many people in the work group with 
     contributions to the mailing list on this topic.

Normative References

     [RFC3530]
          S. Shepler, et. al., "NFS Version 4 Protocol", Standards Track
          RFC

     [Noveck]
          D. Noveck, "Migration Issues for NFSv4", IETF Internet Draft, 
          draft-noveck-nfsv4-migration-issues-00.txt

     [Thurlow]
          R. Thurlow, "A Namespace For NFS Version 4", IETF Internet
          Draft, draft-thurlow-nfsv4-namespace-00.txt

Author's Address

     C. Charles Fan
     Rainfinity
     2740 Zanker Road
     San Jose, CA 95134  USA

     Phone: +1 408 382 4755
     EMail: [email-masked]

Full Copyright Statement

     Copyright (C) The Internet Society (2004).  This document is
     subject to the rights, licenses and restrictions contained in BCP
     78 and except as set forth therein, the authors retain all their
     rights.

     This document and the information contained herein are provided on
     an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
     REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND
     THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
     THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR
     ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
     PARTICULAR PURPOSE.

Intellectual Property

     The IETF takes no position regarding the validity or scope of any
     Intellectual Property Rights or other rights that might be claimed
     to pertain to the implementation or use of the technology described
     in this document or the extent to which any license under such
     rights might or might not be available; nor does it represent that
     it has made any independent effort to identify any such rights.
     Information on the procedures with respect to rights in RFC
     documents can be found in BCP 78 and BCP 79.

     Copies of IPR disclosures made to the IETF Secretariat and any
     assurances of licenses to be made available, or the result of an
     attempt made to obtain a general license or permission for the use
     of such proprietary rights by implementers or users of this
     specification can be obtained from the IETF on-line IPR repository
     at http://www.ietf.org/ipr.

     The IETF invites any interested party to bring to its attention any
     copyrights, patents or patent applications, or other proprietary
     rights that may cover technology that may be required to implement
     this standard.  Please address the information to the IETF at ietf-
     [email-masked].

Acknowledgement

     Funding for the RFC Editor function is currently provided by the
     Internet Society.

_______________________________________________
nfsv4 mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/nfsv4