[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: question about TCPAgent reset()
On Wed, 26 Jan 2000, Lloyd Wood wrote:
> On Tue, 25 Jan 2000, Guo, Liang wrote:
>
> > However, since the ACK packet (acking packet 100) for the previous
> > connection is still in flight, so as soon as $stcp starts, it
> > will get this ACK packet and end the session, but it hasn't
> > sent any packet out!
>
> Surely the sequence number for that ack packet should (in most cases)
> be beyond the right window of the new $stcp session, so $stcp should
^^ edge of the
there. that makes more sense.
L.
> simply ignore it?
>
> Looking in:
>
> void TcpAgent::newack(Packet* pkt)
> [..]
> hdr_tcp *tcph = hdr_tcp::access(pkt);
> [..]
> last_ack_ = tcph->seqno();
> prev_highest_ack_ = highest_ack_ ;
> highest_ack_ = last_ack_;
>
> if (t_seqno_ < last_ack_ + 1)
> t_seqno_ = last_ack_ + 1;
>
> some sort of (untested conceptual suggestion; off the top of my head
> from a quick browse) sanity check would be sensible here:
>
> last_ack_ = tcph->seqno();
> if (last_ack_ > maxseq_)
> break; /* ack isn't acking anything we sent */
> /* probably other ways to do it:
> Got an int - TracedInt > TracedDouble here. ugh.
> if (last_ack_ - highest_ack_ > cwnd_)
> break;
> */
> prev_highest_ack_ = highest_ack_ ;
> highest_ack_ = last_ack_;
>
> etc. This isn't quite Savage-et-al style defensiveness; just trying to
> turn:
>
> /*
> * Process a packet that acks previously unacknowleged data.
> */
>
> into
>
> /*
> * Process a packet that acks previously unacknowleged data
> * that we think we sent.
> */
>
> cheers,
>
> L.
>
> thinks tcp really should distinguish pkts for different 'conceptual'
> tcp connections from the same 'physical' tcp agent object anyway.
>
> <[email protected]>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>
>
>
>
>
>
>
<[email protected]>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>