Wrong MTU sizes

Another set of performance problems can occur whenever a system chooses to delay an acknowledgment until two full-sized segments have been received, but the system is receiving segments that are smaller than the system’s local MTU. In this situation, the sender may send many segments, which the recipient does not acknowledge.

This particular scenario most-often happens when two devices announce large MTUs during the circuit-setup process (using the MSS option), but the sender then determines that a smaller end-to-end MTU is required in order to transfer data to the recipient (this is typically detected using Path MTU Discovery). The sender will therefore only transmit small segments to the recipient, who will not return an acknowledgment until enough data has been received to fill two full-sized segments (according to its understanding of the end-to-end MTU, which is still reflective of the local MTU).

This introduces all kinds of performance problems during slow start and congestion avoidance, since the sender’s congestion window will only allow a few segments to be sent before waiting on an acknowledgment to arrive. Eventually the recipient’s delayed acknowledgment timer would expire, and it would send one acknowledgment for all of the data that it had received, thereby allowing the sender to increment its congestion window and resume sending data, resulting in a very bursty ramp-up process.

However, it is important to realize that this scenario only happens when ...

Get Internet Core Protocols: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.