If you pick a low multiplier such as 1, you'd run into quite a few premature timeouts. Moreover, you don't even have to use an integer, what's wrong with a multiplier of x2.5?īut what's important is to understand is what would happen with different multipliers. You could use any positive integer, from 1 to basically infinity. This is also bad - we could have identified the lost packet earlier and re-transmitted it.Ĭan it be just any arbitrary integer multiple of the round-trip-timeįirst of all, the answer is yes. If we use a timeout which happens to be higher than the actual RTT, it'll take us longer to identify and re-transmit a lost packet.
This is known as a premature timeout, and it's bad - we're re-transmitting a packet even though the transmission was successful. If we use a timeout which happens to be lower than the actual RTT, we'll timeout before the ack had time to arrive. Let's consider what happens if we guess wrong.
Ideally, you want the timeout to be equal to the exact time it takes from the moment you've sent a packet, until the moment you receive the acknowledgement from the other party - this pretty much the RTT.īut it's almost impossible to know the exact ideal timeout in advance, so we have to guess.