[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ns] reworded ECN problem in NS
Thanks.
But i wrote this based on the implementation of one member function of
TCP agent class in NS which is called whenever an ECE Ack is received.
I am just adding the code here from tcp.cc
void TcpAgent::ecn(int seqno)
{
if (seqno > recover_ ||
last_cwnd_action_ == CWND_ACTION_TIMEOUT) {
recover_ = maxseq_;
last_cwnd_action_ = CWND_ACTION_ECN;
if (cwnd_ <= 1.0) {
if (ecn_backoff_)
rtt_backoff();
else ecn_backoff_ = 1;
} else ecn_backoff_ = 0;
slowdown(CLOSE_CWND_HALF|CLOSE_SSTHRESH_HALF);
}
}
Here it shows that it will react even if cwnd is 1. I think that's
why my ECN flow stops. please rectify me if i am wrong.
regards
rupinder
On Thu, 15 Jun 2000, Sally Floyd wrote:
> >Now TCP code in NS is supposed
> >to reduce cwnd to 1/2 after receiving ECE Acks. My ECN flow stops after
> >receiving ECE Acks. Is it due to cwnd<1 or any other problem?.
>
> When cwnd is 1, and the CE bit is set on the packet, then
> the TCP is required to wait for a retransmit timer to expire when
> it receives the ACK notifying it of this ECN. TCP does not reduce
> its congestion window to 1/2 in this case. The retransmit timers,
> and the exponential backoff of the retransmit timers, are a
> fundamental component of TCP congestion control in the highly
> congested regime.
>
> This is illustrated in Section 8 of the document
> "ECN Implementations in the NS Simulator"
> available from "http://www.aciri.org/floyd/ecn.html", and specified
> in the ECN RFC.
>
> - Sally
> --------------------------------
> http://www.aciri.org/floyd/
> --------------------------------
>