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

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



On Tue, 4 Apr 2000, Joo Changhee wrote:

> Maybe I had misconcept in terminology, "out-of-order".
> I use "out-of-order" as the packet at the arrival of which the receiver
> should send an ACK without delaying it. 

That's one way of looking at it, certainly.


> So, what I am willing to indicate is that  an ACK of some "next expected"
> packets should not be delayed.
> for example, The sender send W packets from seq. 1. 

large initial windows?

> Assuming the first W-1
> packets are dropped and the last W-th packet arrived at the receiver,
> after any kind of retransmission method, the sender retransmit the dropped
> packet from seq. 1. At this time, the receiver has "next expected" seq. 1
> but the receiver should not delayed the ACK of it. 

Why shouldn't the receiver delay the ACK? Delayed acks have to start
somewhere; you're basically saying that delayed acks should be
exclusively second-in-order-and-onwards, rather than
first-in-order-and-onwards. I'd argue that this first packet is not
out of order as far as the window and its needs are concerned, and is
therefore correctly delayed.


> But unfortunely in current ns implementation, the receiver delayed it.
> So, I think that if we use maxseen_ instead of next_, we can correct it.

maxseen_? Definitely not.

L.

> Thanks
> jchee 
> 
> I observe this behavior in some ns simulations. 
> 
> On Mon, 3 Apr 2000, Lloyd Wood wrote:
> 
> > On Sun, 2 Apr 2000, [ks_c_5601-1987] ��� wrote:
> > 
> > > I think there is a small bug in the implementation of delayed ACK in "tcp-sink.cc"
> > > 
> > > At line 300 of tcp-sink.cc of ns 2.1b6, (DelAckSink::recv).
> > > To delay an ACK, packet seq. "th->seqno()" is compared to "acker_->Seqno()"
> > > 
> > > It can cause a problem, because received packet can be "next expected"
> > > and simultaneously "out-of-order". 
> > > Hence the comparison should be changed to between packet seq. "th->seqno()" and 
> > > _max seq._ "maxseen_". 
> > 
> > Definitely not.
> > 
> > maxseen_ is the highest sequence number seen to date, so can be from 
> > an out of order packet. 
> > 
> > A received packet cannot be next expected and out-of-order, where
> > 'out-of-order' means not-what-is-needed-to-move-the-left-window-edge-
> > along. The delack timer is only started when a received packet is
> > in-order, ie was expected, and maxseen_ doesn't tell you that.
> > 
> > L.
> > 
> > <[email protected]>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>
> > 
> 
> -------------------------------------------------------------
> Changhee Joo                           [email protected]
> School of Electrical Engineering, Seoul National Univ., Korea
> -------------------------------------------------------------
> 
> 

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