next up previous contents
Next: Design for the Up: Implementing RBAC using Previous: Implementing RBAC using

The Network File System

 

The Network File System, NFS, was introduced by Sun Microsystems Inc. in 1985. The goal was to provide transparent access to remote file systems. Sun chose to make NFS an ``open'' protocol by publishing the specification and by licensing a reference installation. This has made NFS widely used and ported, to non-Unix platforms as well. The first published version of NFS was called Version 2 [Sun89]. In 1995, several vendors, including Sun, IBM, and Digital, published an extended Version 3 of the NFS protocol [PJS94,CPS95].

NFS is a client/server protocol. An NFS server makes file systems available to clients. When attached to a server, a client application will perceive the file system exported by the server as being a part of its own local file system.

Figure 5.1 shows the principal components used in NFS client/server communications. Important pre-requisites for NFS are the Virtual File System (VFS) and the Remote Procedure Call mechanism (RPC). The VFS is an interface to an abstract file system and provides the indirection necessary in order to present a single file system to the client while physically there may actually be several. RPC, together with the External Data Representation standard (XDR), provides the network transport mechanism used by NFS. The VFS, RPC and XDR are all technologies introduced by Sun [Kle86,Sun87,Sun88].

  
Figure 5.1: NFS communications between two Unix computers

The operation where a client incorporates a remote file system into its own virtual file system is called mount. This initial exchange is specified in [Sun89] as a companion mount protocol to the NFS protocol. During the mount exchange the client receives an initial NFS file handle from the NFS server. The client passes a handle of this kind on every subsequent call to the NFS server. A file handle contains all information necessary for the server to carry out a request. This feature of the NFS protocol makes the server stateless as the server need not maintain any information about connected clients. This is a very important property of NFS as it makes the protocol very robust. For instance, there is no need for any special procedures to handle server crash recovery. If the server goes down, a client will simply retry its request until the server again comes online to serve it.

NFS service functions

Once a client has mounted an NFS file system, the NFS protocol specifies a number of functions a client may use to access the server. In NFS version 2 there are 18 functions (of which one is obsolete and one is for use in later versions), whereas in version 3 the number has been extended to 22. As our design is based on a version 2 servergif we discuss here only functions found in that version.

  
Table 5.1: NFS version 2 requests

Table 5.1 summarizes the service functions defined in NFS version 2. Upon examination it is evident that the NFS services rather closely mirror file level operations available in a Unix system. However, by using a subset of the functions, or by providing suitable mappings, NFS has also been implemented for other operating systems, such as MS-DOS, Novell Netware and VMS (see for instance [Mic,Nov,Att]).



next up previous contents
Next: Design for the Up: Implementing RBAC using Previous: Implementing RBAC using



matgu@ida.liu.se