What is TCP "excessive buffering" reported by the ICSI Netalyzr ?
When TCP encounters delay on the network (latency/ping/rtt), it uses "TCP Window" buffers to continue communicating before receiving acknowledgement (ACK) from the other end of the connection that data has been received. Those buffers are essentially the amount of data allowed to remain in the network before the sender stops transmitting and starts waiting for acknowledgement.
TCP is lossless protocol, meaning it sends ACKnowledgement for each received packet. When a server sends packets to a client, there is always some delay in getting those ACKs back from the client, especially noticeable with high-speed/high-latency broadband networks, such as all Cable/DSL internet connections.
TCP Window buffers need to be large enough to accomodate enough data to be send witout interruption (before the sender stops and waits for ACKnowledgements). The minimum necessary buffer size can be calculated using the BDP product based on bandwidth and latency.
An "excessive buffering" is a subjective value, meaning that your TCP Windows allow for "too much" unacknowledged data to remain on th network (higher than necessary TCP Window values). This is only a problem if you are experiencing packet loss, or high jitter on the line, because then more data is subject to being discarded/retransmitted by congested routers.
The trick to the perfect buffering is to find a balance between a "high enough" buffer that will not limit your speed, and "low enough" buffer that will reduce congestion on the network in general (the amount of data waiting to get to you).
It is worth to note the following points:
1. Congestion is a normal part of the TCP protocol, it tries to send data as fast as it can until it fills the buffers.
2. A buffer needs to be high enough to be called a buffer, i.e. by design it needs to allow for variations and increases in speed/latency.
3. Windows 7/8 auto-tunes the TCP Window, so you can only adjust how aggressive that auto-tuning algorithm is, you can't set the TCP Window buffer to a static number. Leaving it at "normal" works well for most broadband connections.
Because of the variations in latency in speed with residential broadband connections, we recommend leaving the TCP Window auto-tuning at "normal" and not limiting it further in Windows 7/8/10.
See Also: Bandwidth * Delay Product