The default transport protocol for NFS is TCP; however, the Red Hat Enterprise Linux kernel includes support for NFS over UDP. To use NFS over UDP, include the mount
option -o udp
when mounting the NFS-exported file system on the client system. Note that NFSv4 on UDP is not standards-compliant, since UDP does not feature congestion control; as such, NFSv4 on UDP is not supported.
There are three ways to configure an NFS file system export:
-
On demand via the command line (client side)
-
Automatically via the /etc/fstab
file (client side)
-
Automatically via autofs
configuration files, such as /etc/auto.master
and /etc/auto.misc
(server side with NIS)
For example, on demand via the command line (client side):
mount -o udp shadowman.example.com:/misc/export /misc/local
When the NFS mount is specified in /etc/fstab
(client side):
server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr,udp
When the NFS mount is specified in an autofs
configuration file for a NIS server, available for NIS enabled workstations:
myproject -rw,soft,intr,rsize=8192,wsize=8192,udp penguin.example.net:/proj52
Since the default is TCP, if the -o udp
option is not specified, the NFS-exported file system is accessed via TCP.
The advantages of using TCP include the following:
-
UDP only acknowledges packet completion, while TCP acknowledges every packet. This results in a performance gain on heavily-loaded networks that use TCP when mounting shares.
-
TCP has better congestion control than UDP. On a very congested network, UDP packets are the first packets that are dropped. This means that if NFS is writing data (in 8K chunks) all of that 8K must be retransmitted over UDP. Because of TCP's reliability, only parts of that 8K data are transmitted at a time.
-
TCP also has better error detection. When a TCP connection breaks (due to the server being unavailable) the client stops sending data and restarts the connection process once the server becomes available. since UDP is connectionless, the client continues to pound the network with data until the server re-establishes a connection.
The main disadvantage with TCP is that there is a very small performance hit due to the overhead associated with the protocol.