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

[ns] Problem in TCP-Vegas




Hi all,

I was running a simulation based on your TCP-Vegas implementation.
I came across a problem in how your code update the round trip delay.

As far as I understand from TCP-Vegas protocol, v_baseRTT_ should be the
minimum value for all of round trip times (rtt) have been measured so far.
In other word v_baseRTT_ should be updated to a smaller value than its 
previous one, if any updating is required, right? (I assume we don't have
any rerouting whatsoever).

The problem that I have is, if you look into your code (tcp-vegas.cc) line
171,172

                     if(rtt<v_baseRTT_ || rttLen<=1)
                        v_baseRTT_ = rtt;

which is basically for updating v_baseRTT_.

I guess that OR in If statment should be changed to AND. I'm not quite
sure it's just a guess!
 
I ran a simple simulation with 4 tcp-vegas sources and v_baseRTT_ have
been updated for those 4 sources as follow;

v_baseRTT_(before update)=0.093280
v_baseRTT_(after update)=0.093280

v_baseRTT_(before update)=0.109280
v_baseRTT_(after update)=0.109280

v_baseRTT_(before update)=0.093280
v_baseRTT_(after update)=0.093280

v_baseRTT_(before update)=0.109280
v_baseRTT_(after update)=0.093280

v_baseRTT_(before update)=0.170400
v_baseRTT_(after update)=0.170400

v_baseRTT_(before update)=0.170400 ***
v_baseRTT_(after update)=0.176000  ***

v_baseRTT_(before update)=0.282400
v_baseRTT_(after update)=0.282400

v_baseRTT_(before update)=0.282400 ***
v_baseRTT_(after update)=0.288000  ***

As you see your code update v_baseRTT_ sometime to a larger value!
Can you make me sure that what you implemented in line 171 and 172 is
exactly right and can you clarify where could be wrong in my experiment?
,if possible.
 
Thank you in advance.

--Abdollah