Hi Mauro,
Time does store its data into an int64_t. I suspect (but I'm not sure)
that the change to those variables is to allow a proper time
calculation. One usual mistake is to assume that, for example, one can
multiply two Time values, but this leads to overflow errors. The Time
class is not really made to operations on it beside simple sums and
subtractions. Plus people unaware of its underlying data type always
mess up.
It could even be that ns-3.10 was buggy and 3.13 is not :)
About the MinRTO, we misunderstood at it. MinRTO is the Minimum RTO
(i.e., the default one), used just in the
RttMeanDeviation::RetransmitTimeout () function. Now, why should we
bother about it then?
Simple: if you do NOT receive packets, you don't have any estimation,
so the estimate is the default value (very low) and the MinRTO kicks
in. All the packets will be retransmitted (you didn't receive any ack
in time, isn't it?) and your estimation will never be available
(because we don't calc the RTT on packets who have been
retransmitted).
It's all in the RttMeanDeviation class code.
Satellite links are a pain in the ***, isn't it? Ah, well, if it can
make you happier, they're even more a pain when you have to use them
for real :)
Anyway, take a closer look at the RttMeanDeviation class. I think that
in order to make a proper Westwood (or any other TCP flavor) you'll
have to modify heavily also the way to measure the RTO.
Cheers,
Tommaso
On Jan 31, 1:04 am, Mauro Vidotto <
mauro.vido...@gmail.com> wrote:
> Hi Tommaso,
>
> Today tested your suggestion, I set MinRTO to 1 second as a test. With this
> value the problem does not appear. But if the the delay of the network is
> increased again to a value higher that the MinRTO the issue is again back.
> NS-310 and NS-3.13 have the same default value for MinRTO, 200ms. NS-3.10
> can get the samples of the RTT, calculate the RTT estimate and the RTO
> correctly while NS-313 can not (at least this is what i could see ).
>
> I simulated the same scenario using TcpReno and TcpNewReno, both of them
> have the same problem (the window does not increase in more than 2 MSS).
> The problem seems to be in a module used by any of TCP variants.
>
> I was working in the implementation of TcpWestwood, so i had to modified
> part of the code. I realized that from NS-3.10 to NS3.13 the type of the
> variable est, variance minrto was changed from Time to int64x64_t, do you
> know the reason of this change?
>
> I suspect that maybe the est variable is not being correctly initialized
> when the rtt-estimator is created (InitialEstimation attribute)
>
> Regards
> Mauro Vidotto
>