0

I'm debugging a high-bandwidth TCP connection whose throughput is significantly lower than the capability of the device and the network. The network between these 2 hosts is expected to be high bandwidth, high latency, and high quality (less package loss).

In the Wireshark, I can observe that the TCP receiver's window quickly increases to a maximum value of 1574400 and then keeps constant. The sender frequently runs into the status of TCP Window Full.

window

In the Expert Information window, I can observe that the receiver's window frequently becomes full but there is no retransmission happened. (with filter ip.addr == host2 and ((tcp.srcport==36000 and tcp.dstport==23545) or (tcp.dstport==36000 and tcp.srcport==23545)))

event

On the receiver host, I found the maximum window size configurable was much higher than the observed maximum window size.

$ sysctl net.ipv4.tcp_rmem
net.ipv4.tcp_rmem = 4096        87380   6291456

$ sysctl net.core.rmem_max
net.core.rmem_max = 229376

The low throughput was a result of high latency but the receiver's window size should increase to a higher value so that the throughput could be improved. Is it true that those TCP-Window-Full events were indicating that the congestion window is higher than the receiver's window and the size of the receiver's window didn't meet the network's need?

I'm curious why the receiver's window advertisement stop increasing at a value of 1574400 and how to increase it. Is it controlled by the receiver OS configuration?

0

You must log in to answer this question.

Browse other questions tagged .