Formula for TCP Performance/Latency/Window Size ====== Formula ====== | Bits-per-second-throughput = TCP-Window-Size-in-bits / Latency-in-seconds | | Optimal TCP window size in bytes = Bandwidth-in-bits-per-second * Round-trip-latency-in-seconds = TCP window size in bits / 8 | | Maximum Latency for a desired throughput =TCP-window-size-bits / Desired-throughput-in-bits-per-second = Maximum RTT Latency | ====== Example of TCP Performance ====== Suppose Windows size is 64K bytes, and its round trip latency is 0.03 seconds, then: 1 Gbps Link Rate Server <---------------------------------> Client Round Rrip Latency is 0.03 TCP throughput of 1 flow = 64K bytes/0.03 seconds = 65536 Bytes/0.03 = 65536 * 8 bits/0.03 = 17.4 Mbps ====== Example of optimal Windows Size ====== Suppose 1 TCP Flow throughput is 1 Gbps with 30 milliseconds round trip latency: Windows Size = 1,000,000,000 bps * 0.030 seconds = 30,000,000 bits / 8 = 3,750,000 Bytes ====== Example of Round Trip Latency====== You might want to achieve 10 Gbps FTP throughput between two servers using standard 64KB TCP window sizes. What is the maximum latency you can have between these two servers to achieve 10 Gbps? TCP-window-size-bits / Desired-throughput-in-bits-per-second = Maximum RTT Latency Maximum RTT Latency = 64K bytes/10 Gbps = 524288 bits / 10,000,000,000 bits per second = 52.4 microseconds