Friday, September 15, 2006

Test your Network Performance with ntttcp

UPDATE: ntttcp is available for download here.

This is a short tutorial on how to use the industry-standard ntttcp tool to bandwidth test a machine's network adapter (aka NIC), drivers, etc. I've used the process below to successfully test 100Mbps Fast Ethernet setups. The test simply simultaneously sends and receives data as fast as possible between two machines. With solid hardware and software, you should get pretty close to the theoretical max of 100Mbps both directions, simultaneously.

First, obtain ntttcp from this site.

Setup both of your machines, by doing the following on both:

  • Copy ntttcpr.exe and ntttcps.exe to the machine(ntttcpr.exe and ntttcps.exe are just renamed versions of the ntttcp_<arch>.exe file from the download above).
  • Configure the Windows Firewall to allow incoming connections to ntttcpr.exe at least on your local subnet.
  • Configure Task Manager's Networking tab to include the following columns:
    • Bytes Sent Throughput
    • Bytes Received Throughput
    • Bytes Sent/Interval
    • Bytes Received/Interval

Run the following commands to get ntttcpr listening on each machine:

  • On machine A, run:
    • ntttcpr -p 5001 -w -m 1,0,<ip of machine A> -v -a 4
  • On machine B, run:
    • ntttcpr -p 5101 -w -m 1,0,<ip of machine B> -v -a 4

Start the following commands approximately simultaneously on both machines to start the test:

  • On machine A, run:
    • ntttcps -p 5101 -w -m 1,0,<ip of machine B> -v -a 4
  • On machine B, run:
    • ntttcps -p 5001 -w -m 1,0,<ip of machine A> -v -a 4

TIP: When running ntttcps.exe, make sure you don't run it by giving a complex, full-path.

In other words, when running it, don't run it with a command line like the following:

    "C:\dir with spaces\ntttcps.exe" -p 5001 ... <other args>

Instead, try to run it with something simpler like:

    ntttcps -p 5001 ... <other args>

If you run it with a complex, full-path, you may encounter a bug in ntttcps where it thinks it is ntttcpr and it won't run correctly.

Anyway, while the commands are running, view Task Manager's Networking tab. Both "Bytes Sent Throughput" and "Bytes Received Throughput" should be at least 80-95% for each. Similarly, the "Bytes Sent/Interval" and "Bytes Received/Interval" should be at least 10,000,000 bytes each (for 100Mbps Fast Ethernet).

I was able to get such performance with cheap commodity machines, network cards, and network switches. On one machine, I could get about 85% throughput receiving, but only 25% throughput sending, when sending and receiving simultaneously. Needless to say, I switched to a better network adapter. :-)

1 comment:

Anonymous said...

Works Great. I get about 320 Mbps durind send and received test as described. Gigabit network. Quad QX6700 on one side and P4 3mhz on the other.