[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/
> --------------------------------
>