Wednesday, 10 February 2016

Why your tested throughput is different from our NAT Throughput?

Some customers give us feedback that their tested throughputs are different from our NAT throughput. 
There are many throughput measuring tools, such as Iperf, Chariot, SmartBits.
Different customers may use different tools. Thanks to the different test principle of different tools, the results of test may different.
SmartBits is a testing equipment, the price is expensive also. But it is the higher level test equipment than Iperf and Chariot. In the industry, many famous manufacturers use SmartBits to test their devices.
Chariot is a paid professional software. Normally, end users may not buy it for testing.
Iperf is a free measuring tool, so end users may use it to test the throughput of devices.
The NAT Throughput (350Mbps) information from our web site is tested by SmartBits . So if you use the Iperf or Chariot, the result of throughput may be different from the NAT throughput that we tested.
Now, take the Iperf as an example to explain why the values are different.
DUT (Device under Test): TL-ER5120/TL-ER6120.
Precondition:
1: PC_A with a Gigabit Ethernet adapter is connected to LAN port of DUT. It acts as the client;
2: PC_B with a Gigabit Ethernet adapter is connected to WAN port of DUT. It acts as the server;
3: Don’t use the old version of iperf. Here is version 2.0.5 <08 Jul 2010> ;
4: Open the NAT and close the firewall.
Test network topology:

Test results:

TCP
UDP
Client
216Mbps
423Mbps
Server
215Mbps
350Mbps

The client of TCP test:

The server of TCP test:


The client of UDP test

The server of UDP test

TCP is a connection-oriented protocol and UDP is a connectionless protocol. So the testing values of TCP and UDP are different.
To UDP, the data that the client sends may not be received by server, so the client’s value is bigger than the server’s.
Normally, the SmartBits use the UDP data to test the throughput, and only give the receiving port value as the throughput, ignore the unreceived data.
The values that the Chariot and Iperf get is just reference values of throughput. They are not the actual values of throughput. The reference values just can be used to judge whether the Interface performance has problem or not.