projects techreports press lab location staff
citi top.2 top.3
citi mid.3
bot.1 bot.2 bot.3

Projects: NFS Version 4 Open Source Reference Implementation

The Second NFS Version 4 Bakeoff, July 11-13, 2000

We had 5 participants this time around that represented 7 implementation platforms. The 7th was the OpenBSD work by CITI/Umich.  From the testing that occurred and the reports that were given on Thursday afternoon, a majority of the implementations have the basic NFSv4 operations done and working properly.  Progress  has been made with the OPEN share support and this is where most of the implementations are moving towards.  As a result of the implementation work to this point, no errors or major problems have been found in the protocol.

One goal of this bakeoff was to pass as many of the basic connectathon tests as possible.  The NFSv4 ports have progressed far enough to cause interoperability problems. Some ports have implemented the manditory SETCLIENTID, SETCLIENTID_CONFIRM mechanisms required before OPEN can succeed.   These implementations could therefore not interoperate with implementations that have yet to code the SETCLIENTID, SETCLIENTID_CONFIRM calls.  OPEN is futher complicated by manditory DOS style share locks.  Again, some ports had a share lock implementation, others did not.  Below is a listing of the results of all the testing that the CITI NFSv4 team did at the second NFSV4 Bakeoff.

Linux client, Linux server

  • all 9 basic connectathon tests
  • setclientid, and share lock implementations

Linux client, Network Appliance server

  • basic connectathon tests 1,2,3,4,7,9
  • read, write work, but not well enough to pass connectathon tests
  • we both have share locks implemented

Hummingbird client, Linux server

  • connectathon tests: ran out of time. expect test 3,9 would work
  • Hummingbird client: setclientid implemented, share lock state implementation
  • mount,ls, open, read, close, mkdir

Linux client, Java server

  • basic connectathon tests 3.
  • java server setclientid implemented, no share lock state.
  • mount, ls, cat, create file, mkdir

Java client, Linux server

  • no time for testing

Linux client, Solaris server

  • connectathon basic test 3,9
  • mount, ls, mkdir, rmdir, symlink, hardlink ...
  • Solaris server: no setclientid impementation, so no open, read, write, close.

Solaris client, Linux server

  • ran out of time
  • no connectathon tests
  • mount, ls, mkdir
  • Solaris client: no setclientid implementation, so no open,read,write,close.

OpenBSD client; Network Appliance, Linux, Java, Solaris servers

  • mount, ls, stat, read (except Linux which requires setclientid)
  • OpenBSD client: no setclientid


  • ported Sun rpcsec_gss test suite to Linux and OpenBSD
  • Linux, OpenBSD user level (client & server) rpcsec_gss passed Connectathon test
  • added RPCSEC_GSS support to Ethereal, open-source sniffer

Not Available for testing

  • Hummingbird server
  • EMC server

Problems we encountered

  • other clients mounting '/'
  • Linux client and server:  buffer overflows in xdr
  • we fixed various protocol errors, both client and server
  • pseudo fs - returning fs attributes, crossing mountpoints projects | techreports | press | lab | location | staff Email address
or call +1 734 763 2929
Copyright © 1996-2013
The Regents of the University of Michigan