Comparison-based File Server Verification
USENIX '05 Annual Technical Conference, April 10-15, 2005. Anaheim, CA.
Yuen-Lin Tan, Terrence Wong, John D. Strunk, Gregory R. Ganger
Parallel Data Laboratory
Carnegie Mellon University
Pittsburgh, PA 15213
Comparison-based server verification involves testing a server by comparing its responses to those of a reference
server. An intermediary, called a “server Tee,” interposes between clients and the reference server, synchronizes
the system-under-test (SUT) to match the reference server’s state, duplicates each request for the SUT, and compares each pair of responses to identify any discrepancies. The result is a detailed view into any differences in how the SUT satisfies the client-server protocol specification, which can be invaluable in debugging servers, achieving bug compatibility, and isolating performance differences. This paper introduces, develops, and illustrates the use of comparison-based server verification. As a concrete example, it describes a NFSv3 Tee and reports on its use in identifying interesting differences in several production NFS servers and in debugging a prototype NFS server. These experiences confirm that comparison-based server verification can be a useful tool for server implementors.