- Analyze Network Layout
- Measure Network Throughput Capabilities
- Network Troubleshooting Tools
1.2 Measure Network Throughput Capabilities
Once the layout of the physical network is understood, the next step in validating your network is to measure the throughput of the connection separating the client and server. Generally speaking, the faster your network throughput, the better your NFS performance will be.
When testing the performance of the network for NFS purposes, it is essential to eliminate the NFS layer from consideration by simply testing the network transport layer using non-NFS protocols. If a network throughput problem exists between an NFS client and server, the problem would likely affect any network-based application, not just NFS.6 It is also important to measure the throughput going in both directions (i.e. client to server, server to client) to make sure the performance is comparable. Similarly, when attempting to characterize network throughput, it is important to eliminate any influence of the local filesystems. It is therefore necessary to select measurement tools that are not dependent upon NFS or filesystem resources.
Several tools exist to help system and network administrators measure the throughput of their network connections. Two of the more prominent tools are ttcp(1) and netperf.
1.2.1 ttcp(1)
ttcp(1) is a simple, lightweight program that measures the throughput of any network connection without relying on the filesystem layer. It can generate either UDP or TCP traffic and the packet size is adjustable, allowing it to simulate the behavior of different applications.
Mike Muuss (the author of the ping command) and Terry Slattery, of the US Army Ballistics Research Lab (BRL), developed the ttcp (Test TCP Connection) program in the early 1980's. The program now resides in the public domain and is freely available to download from http://ftp.arl.mil/ftp/pub/ttcp. The ttcp man page is also available from this site, which documents the many available command-line arguments.
A sample ttcp session is shown in Figure 1.6.
Figure 1.6 ttcp Sending TCP Traffic from Client to Server
In this example, ttcp is run on the NFS client system and sends TCP/IP traffic to the NFS server's discard port (9) across a Gigabit Ethernet connection. This output shows the client can send over 72MB/sec. on this link. Figure 1.7 shows the server using ttcp to send TCP/IP traffic back to the client across the same link and getting roughly the same throughput.
Figure 1.7 ttcp Sending TCP Traffic from Server to Client
The system or network administrator now has a fairly good idea what the capabilities are of the network link between these two systems. Of course, this does not imply that the NFS throughput should be 72-73MB/sec. across this link, since the NFS protocol relies much more on CPU, filesystem, and memory resources than ttcp does.
1.2.2 netperf
netperf is a benchmark utility that can measure the performance of many different types of networks. It provides tests for both unidirectional throughput and end-to-end latency. Like ttcp, netperf measures throughput without relying on any filesystem resources. However, it is a far more sophisticated network-measuring tool, compared to ttcp.
Rick Jones, of HP's Infrastructure Solutions and Partners group, developed netperf in 1991 and he has continued to add new features and capabilities to the program as new networking technologies became available. The best source of information is the official netperf web site: http://netperf.org. The latest version of the source code is available at the following location: ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf.
Figure 1.8 shows the screen output of netperf sending TCP and UDP data from system "atc03.cup.hp.com" (Cupertino, CA) to three different network destinations:
Gigabit Ethernet connection to "atc01.cup.hp.com" (Cupertino, CA)
100Mb Ethernet connection to "atc01.cup.hp.com" (Cupertino, CA)
WAN connection to "ros87252.rose.hp.com" (Roseville, CA)
Figure 1.8 netperf Throughput from Different Network Connections
In this example, the UDP traffic sent over a Gigabit Ethernet connection to a neighbor system in Cupertino yielded a throughput of over 74 MB/sec. Sending TCP traffic to the same Cupertino-based system over a 100BT link yielded over 11MB/sec. Finally, sending TCP traffic across HP's network from Cupertino to Roseville (via the six hops identified earlier with ping and traceroute) yielded just under 2 MB/sec.
Also evident from this example is the fact that netperf has a myriad of command-line options, both for the netperf command itself and for the specific type of test you are performing. Be sure to read the netperf manual, available at ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf, very carefully to understand which options are available and their proper usage, as the throughput numbers can vary greatly depending upon how the tests are run.
Just as with the ttcp example earlier, netperf numbers do not directly translate into the expected NFS throughput values. However, they do provide a good means of estimating the upper bounds of a given network connection's bandwidth.