[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] a small bug in delayed ACK ?



On Wed, 5 Apr 2000, Joo Changhee wrote:

> > but they don't do that AFAIK. I think this could be implemented in ns
> > by changing:
> > 
> >         if (delay_timer_.status() != TIMER_PENDING &&
> >                                 th->seqno() == acker_->Seqno()) {
> > 
> > to 
> > 
> >         if (delay_timer_.status() != TIMER_PENDING &&
> >              th->seqno >= maxseen_ && th->seqno() == acker_->Seqno()) {
> > 
> > in DelAckSink::recv(), to decrease the amount of times the timer is
> > set to when the left edge isn't being moved along to fill a gap.
> > 
> > Joo, is this what you were getting at?
> 
> Yes. In addtion, I think the condition can be reduced to 'th->seqno() ==
> maxseen_' because 
>         if th->seqno() > maxseen_, the packet is out-of-ordered.
>         if th->seqno() < maxseen_, the packet fill the hole or unnecessary
>                                    retransmitted packet

Oh, I finally see. 

You're explicitly relying on
acker_->update(th->seqno(), numBytes)
being called _before_ the timer test is carried out; neat but not
clear.

I'd imagine that any change to ns is likely to be messier and involve
testing a bound variable (if (rfc2581delhaviour_==TRUE etc.)

L.

<[email protected]>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>