Network File System Protocol (NFS Protocol Sequence Diagram)
              Client                                    Server                                                       EventStudio System Designer 4.0
            NFS Client                               NFS Server
  Application        Client Shell   Port Mapper    Mountd Daemon                            NFSD Daemon                  11-Aug-07 22:47 (Page 1)

This diagram was generated with EventStudio System Designer 4.0. (http://www.EventHelix.com/EventStudio)

Copyright © 2000-2007 EventHelix.com Inc. All Rights Reserved.
This sequence diagram describes mounting, opening and reading of a file via the NFS (Network File System).
Server Startup
                                        Open Port 111 for UDP and TCP                                     The port mapper starts listening on UDP and TCP
                                                                                                          port 111 for program number to port mapping
                                                                                                          requests from NFS clients.
                                                             1:Register                                   Mountd, the daemon handling NFS mounts,
                                                      Program Number = 100005,                            registers its port number for receiving mount
                                                          Mount Port Number                               requests (Program number 1000005).

                                                                         2:Register                       The NFS server registers its port number for NFS
                                                                Program Number = 100003,                  (Program number 1000003).
                                                                    NFS Port Number

NFS Mount
 Mount server:/user/bill as                                                                               Application initiates mounting of a file system.
         /nfs/bill
               1:mount()                                                                                  The mount API for the OS is invoked.
             server:/user/bill,
                 /nfs/bill

                                2:RPC get_port request                                                    The mount applications port number on the
                                     port_num = 111,                                                      server is determined from the port mapper. The
                                Program Number = 100005                                                   request includes the program number for mount.
                                                                                                          Remote Procedure Call (RPC) is used as the
                                                                                                          underlying protocol for this access. All message
                                                                                                          interactions in NFS are performed as remote
                                                                                                          procedure calls.
                                 3:RPC get_port reply
                                    Mount Port Number

                                          4:RPC MOUNT request                                             Request the NFS server to mount the file system.
                                                 port_num = 111,
                                                Mount Port Number,
                                                 server:/user/bill,
                                                      /nfs/bill

                                                                      Authenticate Client                 Mountd uses the client IP address to authenticate
                                                                                                          the client.
                                                               Perform a local mount for the              The server performs a local mount. The results of
                                                                  requested file system.                  this mount command will be passed back to the
                                                                                                          NFS client.
                                               5:RPC MOUNT reply                                          Communicate the mount results to the NFS client.
                                          File Handle for the File System

                Invoke the mount system call to                                                           The remote mount information is saved along
                associate the NFS handle with a                                                           with the local mount point.
                       local mount point

                6:returns                                                                                 Report a successful mount to the application.
                SUCCESS

Opening a File
 Read file: /nfs/bill/public/
     nfs_tutorial.txt
                1:open()
  file = /nfs/bill/public/ nfs_tutorial.txt,
             mode = read only
Network File System Protocol (NFS Protocol Sequence Diagram)
              Client                                    Server                                                  EventStudio System Designer 4.0
            NFS Client                               NFS Server
  Application        Client Shell   Port Mapper    Mountd Daemon                      NFSD Daemon                   11-Aug-07 22:47 (Page 2)

                                                                                                    Application uses the OS API to open a file. The
                                                                                                    application is not aware that the requested file is
                                                                                                    remotely located and needs to accessed via NFS.
          Process file name to find that /nfs/bill                                                  The OS parses the file to find that the file /nfs/bill
                     is NFS mounted                                                                 is a NFS mounted file system. This initiates the
                                                                                                    NFS file open processing.
                           2:RPC get_port request                                                   Since the file is located on an NFS Server, the
                                port_num = 111,                                                     client initiates access by requesting the port
                           Program Number = 100003                                                  number for the NFS service.

                            3:RPC get_port reply
                               NFS Port Number

The client hierarchically parses the path and obtains a file handle. NFS commands GETATTR and LOOKUP are used to
perform these operations. GETATTR returns the attributes of a file, for example permissions, file size, file owner. LOOKUP
looks up the file and returns a file handle to the file.
                                             4:RPC GETATTR Request                                  Get the file attributes for the /user/bill directory.
                                                            /user/bill

                                               5:RPC GETATTR Reply
                                                          status = OK

                                              6:RPC LOOKUP Request                                  Check if the public directory is available.
                                                        /user/bill/public

                                                7:RPC LOOKUP Reply
                                                          status = OK

                                              8:RPC LOOKUP Request                                  Check if the requested file exists.
                                               /user/bill/public/ nfs_tutorial.txt

                                                9:RPC LOOKUP Reply
                                                          status = OK

                                            10:RPC GETATTR Request                                  Obtain the attributes about the requested file.
                                               /user/bill/public/ nfs_tutorial.txt

                                              11:RPC GETATTR Reply
                                                          status = OK


           12:returns
            File Pointer

Reading File Contents
             1:read()                                                                               The application initiates a read for the file.

This file is on a NFS mounted file system, so the read command is performed via NFS READ RPC calls. The READ calls
specify the file name, the starting offset in each request. The NFS server reads the standard block size and returns to the client.
Note that the NFS server itself is stateless and handles each request independently. The client maintains the application and
performs multiple reads to complete the file read.

The following interaction shows how the client performs multiple reads to complete the file reading operation.
                                                2:RPC READ Request                                  Read from the file start (offset 0)
                                               /user/bill/public/ nfs_tutorial.txt,
                                                        start_offset = 0

                                                     3:RPC READ Reply
                                                         status = OK,
                                                      read_bytes = 1024
Network File System Protocol (NFS Protocol Sequence Diagram)
              Client                                    Server                                      EventStudio System Designer 4.0
            NFS Client                               NFS Server
  Application        Client Shell   Port Mapper    Mountd Daemon           NFSD Daemon                  11-Aug-07 22:47 (Page 3)

                                       4:RPC READ Request                                Initiate the read from the offset 1024 (0 to 1023
                                    /user/bill/public/ nfs_tutorial.txt,                 byte offsets have already been read).
                                          start_offset = 1024

                                       5:RPC READ Reply
                                              status = OK,
                                           read_bytes = 2048

                                     6:RPC READ Request                                  Read the remaining part of the file.
                                    /user/bill/public/ nfs_tutorial.txt,
                                          start_offset = 2048

                                       7:RPC READ Reply
                                              status = OK,
                                            read_bytes = 20


          8:returns

Nfs protocol sequence_diagram

  • 1.
    Network File SystemProtocol (NFS Protocol Sequence Diagram) Client Server EventStudio System Designer 4.0 NFS Client NFS Server Application Client Shell Port Mapper Mountd Daemon NFSD Daemon 11-Aug-07 22:47 (Page 1) This diagram was generated with EventStudio System Designer 4.0. (http://www.EventHelix.com/EventStudio) Copyright © 2000-2007 EventHelix.com Inc. All Rights Reserved. This sequence diagram describes mounting, opening and reading of a file via the NFS (Network File System). Server Startup Open Port 111 for UDP and TCP The port mapper starts listening on UDP and TCP port 111 for program number to port mapping requests from NFS clients. 1:Register Mountd, the daemon handling NFS mounts, Program Number = 100005, registers its port number for receiving mount Mount Port Number requests (Program number 1000005). 2:Register The NFS server registers its port number for NFS Program Number = 100003, (Program number 1000003). NFS Port Number NFS Mount Mount server:/user/bill as Application initiates mounting of a file system. /nfs/bill 1:mount() The mount API for the OS is invoked. server:/user/bill, /nfs/bill 2:RPC get_port request The mount applications port number on the port_num = 111, server is determined from the port mapper. The Program Number = 100005 request includes the program number for mount. Remote Procedure Call (RPC) is used as the underlying protocol for this access. All message interactions in NFS are performed as remote procedure calls. 3:RPC get_port reply Mount Port Number 4:RPC MOUNT request Request the NFS server to mount the file system. port_num = 111, Mount Port Number, server:/user/bill, /nfs/bill Authenticate Client Mountd uses the client IP address to authenticate the client. Perform a local mount for the The server performs a local mount. The results of requested file system. this mount command will be passed back to the NFS client. 5:RPC MOUNT reply Communicate the mount results to the NFS client. File Handle for the File System Invoke the mount system call to The remote mount information is saved along associate the NFS handle with a with the local mount point. local mount point 6:returns Report a successful mount to the application. SUCCESS Opening a File Read file: /nfs/bill/public/ nfs_tutorial.txt 1:open() file = /nfs/bill/public/ nfs_tutorial.txt, mode = read only
  • 2.
    Network File SystemProtocol (NFS Protocol Sequence Diagram) Client Server EventStudio System Designer 4.0 NFS Client NFS Server Application Client Shell Port Mapper Mountd Daemon NFSD Daemon 11-Aug-07 22:47 (Page 2) Application uses the OS API to open a file. The application is not aware that the requested file is remotely located and needs to accessed via NFS. Process file name to find that /nfs/bill The OS parses the file to find that the file /nfs/bill is NFS mounted is a NFS mounted file system. This initiates the NFS file open processing. 2:RPC get_port request Since the file is located on an NFS Server, the port_num = 111, client initiates access by requesting the port Program Number = 100003 number for the NFS service. 3:RPC get_port reply NFS Port Number The client hierarchically parses the path and obtains a file handle. NFS commands GETATTR and LOOKUP are used to perform these operations. GETATTR returns the attributes of a file, for example permissions, file size, file owner. LOOKUP looks up the file and returns a file handle to the file. 4:RPC GETATTR Request Get the file attributes for the /user/bill directory. /user/bill 5:RPC GETATTR Reply status = OK 6:RPC LOOKUP Request Check if the public directory is available. /user/bill/public 7:RPC LOOKUP Reply status = OK 8:RPC LOOKUP Request Check if the requested file exists. /user/bill/public/ nfs_tutorial.txt 9:RPC LOOKUP Reply status = OK 10:RPC GETATTR Request Obtain the attributes about the requested file. /user/bill/public/ nfs_tutorial.txt 11:RPC GETATTR Reply status = OK 12:returns File Pointer Reading File Contents 1:read() The application initiates a read for the file. This file is on a NFS mounted file system, so the read command is performed via NFS READ RPC calls. The READ calls specify the file name, the starting offset in each request. The NFS server reads the standard block size and returns to the client. Note that the NFS server itself is stateless and handles each request independently. The client maintains the application and performs multiple reads to complete the file read. The following interaction shows how the client performs multiple reads to complete the file reading operation. 2:RPC READ Request Read from the file start (offset 0) /user/bill/public/ nfs_tutorial.txt, start_offset = 0 3:RPC READ Reply status = OK, read_bytes = 1024
  • 3.
    Network File SystemProtocol (NFS Protocol Sequence Diagram) Client Server EventStudio System Designer 4.0 NFS Client NFS Server Application Client Shell Port Mapper Mountd Daemon NFSD Daemon 11-Aug-07 22:47 (Page 3) 4:RPC READ Request Initiate the read from the offset 1024 (0 to 1023 /user/bill/public/ nfs_tutorial.txt, byte offsets have already been read). start_offset = 1024 5:RPC READ Reply status = OK, read_bytes = 2048 6:RPC READ Request Read the remaining part of the file. /user/bill/public/ nfs_tutorial.txt, start_offset = 2048 7:RPC READ Reply status = OK, read_bytes = 20 8:returns