1.0 Overview

 

The system we will develop will allow file-sharing between heterogeneous machines without requiring a central file server. It will not be a filesystem per se, but will bridge existing filesystems to allow the retrieval of files and directory information from remote machines, maintaining certain file attributes such as creation and modification dates. It will not be limited to a particular machine architecture or operating system, and we will develop POSIX-compliant (Linux) and Win32 (NT) implementations to demonstrate this cross-platform capability. Furthermore, we aim to provide better performance, reliability, and consistency than existing file-sharing systems such as the Windows Network and AppleTalk.

In order to share files on some machine, the PFS daemon must be running on that machine. Typically the daemon will run as a system service. The daemon provides a File Transfer Service, a Membership Service, and a Directory Service. The File Transfer Service allows remote clients to retrieve shared files. The Membership Service allows a user to discover other machines within the local subnet which are running the PFS daemon. The Directory Service allows a user to browse or search remote shared directories.

We will provide a library which will allow the developer of a PFS client application to access the daemon through a well-defined API. We will develop one such client application, a browser which allows a user to browse accessible machines (using the Membership Service), browse directories on those machines and search for exported files (using the Directory Service), and retrieve exported files (using the File Transfer Service). When using a PFS client application (such as the browser), the PFS daemon must be running on the local system in order to use the Membership Service. However, a PFS client may contact a remote daemon even in the absence of a local daemon, though only the File Transfer Service and Directory Service will be available.

 

2.0 Differences from current designs

 

The goal of a peer-to-peer file transfer system has been attempted before, namely AppleTalk and Microsoft Network. Our system should distinguish itself from these previous designs in portability, reliability, and scalability. AppleTalk is infamously slow, and it invents proprietary protocols where standards TCP/IP and UDP/IP would be satisfactory, and Microsoft Network is subject to consistency and coherency problems, stale network information, and other problems when certain machines break down.

The user should see machines as they become available and not in a lump sum (in other words, no waving flashlights should ever be shown).

 

3.0 Usage Scenarios

 

A user should be able to open the browser application, see a dynamic listing of machines on the network, be able to open a machine up, and be able to access files on that machine. If the Membership Service is not running, it should be possible to enter in the name of a machine and access its shared files and directories in the same manner as if someone opened it from the network listing.

A user should also be able to request to search for a file with a given name and have a request be sent to all machines running the Membership Service to search for the specified file. On each machine, the search will be performed locally on that machine eliminating the need to search through individual directories across the network.

 

 

4.0 Assumptions

 

 

5.0 System Requirements

 

5.1 General

 

 

5.2 File Transfer Service

 

 

5.3 Directory Service

 

 

5.4 Membership Service

 

 

5.5 Interface Library

 

 

5.6 Browser Application

 

 

6.0 High-level Architecture

 

PDF Block Diagram

 

Membership Service:

The Membership Service is a part of the PFS daemon that keeps track of other active PFS clients on a subnet. It can provide machine addresses for a browser application, and it has an interface to the host machine’s network.

 

File Transfer Service:

This part of the daemon will service transfer requests from remote PFS clients, allowing remote machines to read files off the local machine. It interfaces with the host network.

 

Directory Service:

The Directory Service is the final section of the PFS daemon. It will service calls for directory information from remote PFS clients and will handle which files are visible to those clients. Other features include a directory search service. It interfaces with the host machine filesystem and the host network to service requests for directory information.

 

Interface Library:

The Interface Library allows a browser application to call remote PFS daemons without starting its own local daemon. Of course it loses the Membership Service, but this allows the browser to run without sending every request through the PFS daemon. It will call directly into the host network.

Browser Application:

We will implement a browser application to demonstrate the features of the PFS daemon and Interface Library. It will be a GUI that can talk to the daemon and allow the transfer of files from the other machines running the PFS daemon.