[AFS3-std] [RPC Request] 64-bit volume IDs, quotas, and block usages

Jeffrey Altman jaltman@secure-endpoints.com
Mon, 22 Jun 2009 00:27:37 -0400


Matt W. Benjamin wrote:
> My point was that a namespace of a billion volumes clearly is too small, in the sense that neither of us would suggest it if we were designing the protocol today.  
We aren't designing a protocol from scratch.
> So it's right for us to give serious consideration to expanding the namespace, and to making backward compatibility with the oldest clients a secondary consideration.  
This is where you and the OpenAFS gatekeepers differ in a most
significant way.  For us backward compatibility is not a secondary
consideration.  It is the primary consideration.  The fact that we
OpenAFS works with all of the old Transarc clients and that we have not
had any significant transition issues for the users of Transarc AFS is a
point of significant pride.  If you do not maintain backward
compatibility then you might as well create a new file system from
scratch and start over with something that only meets the needs of the
future users.  If that is what you believe then you can go off and do
that on your own.  Steal the portions of AFS3 that you wish, come up
with a name for your new protocol or get ready to be sued by IBM for a
trademark violation.
> The notion that by modernizing AFS we accelerate its replacement in legacy deployments is credible, but, at the same time, we clearly must modernize to keep another group of users, and bring new ones--I'm sure you hear this from folks all the time, too, I know I do.  I guess this needs further discussion.
The users I speak with put their wishes into the following priorities:

   1. robustness and stability.  this is why the vast majority of the
      work on OpenAFS over the last three years has not been new
      features.  Its hard to focus on features or marketing the product
      to new users when you spend all of your time fighting fires.
   2. first class support for existing client operating system
      functionality.  for MacOS X and Windows: integration with the
      graphical user interface.  Support for Unicode.  Support for byte
      range locking on the file servers.  Support for extended
      attributes.  Support for multiple data streams.  Support for any
      native file system functionality for which the lack of support
      results in the end user recognizing that there is something
      special about keeping their data in AFS vs other first class file
      systems as recognized by the OS vendor.  For Linux, either kAFS
      instead of OpenAFS or Fuse AFS because the kernel licensing
      conflicts result in too much fear, uncertainty and doubt about the
      future stability of the file system.
   3. read write replication!!!  Primarily for use as a light weight
      fail over system. 
   4. performance.  increased directory sizes.  increased network
      bandwidth.  decreased directory lookup times.
   5. better management tools.  improved ease of use for initial
      deployment and on-going administration.
   6. NAT and Firewall compatibility.  TCP based transports.  Removing
      fixed port dependencies.  Removing IP addresses from protocol
      exchanges so that split horizon DNS deployments will work.
   7. Search capabilities.  Integration with desktop search so that
      users can find things within the file system. 
   8. Security.  Alternative authentication methods and stronger data
      privacy protection but not at the cost of performance.  Security
      policies that permit encryption to be required only on the volumes
      where it matters.   If you talk to large private network
      deployments of AFS they don't care about encryption.  If you look
      at the deployments at government installations they for the most
      part do not care either.  For the most part having security is a
      check list item but when the software is deployed they disable it
      because they care more about the raw speed.

Modernization does not have to require breaking backward compatibility. 
What it does require is that as any new functionality is added to the
protocol that the designers consider how the new data forms will be
represented using the older RPC variants and where they cannot be, how
the transition will take place and how those that deploy the new
functionality will be able to manage the fact that some data may only be
visible to a subset of the deployed clients for some extended period of
time. 

Increasing the volumeId field size to 64-bits is fine provided that the
transition model for older clients is documented and well understood. 
If the need of the community is that we support the older RPCs for a
minimum of ten years from the time the last client ships with just the
older RPCs, then rolling out RPCs that require new clients to be able to
handle 64-bit time and volumeIds this year will provide the community 29
years to upgrade software or retire old clients before the existing RPCs
will simply fail.  Given that some of the NASA deployments have hardware
deployed with frozen software that is active for more than 20 years on
some missions, we know that some portions of the community will require
that much time.  For OpenAFS, our commitment to backward compatibility
may result in restricting volumeIds to 32-bits for a decade or more. 
There are implementation specific changes that can more efficiently use
the existing volumeId space in the meantime.  That should not stop some
other implementation of the protocol suite from starting from scratch
with the new protocols and ignoring the installed base.

Jeffrey Altman