-
Notifications
You must be signed in to change notification settings - Fork 1
Differences
-
Modified Slow Start of the TCP Vegas not implemented both in linux and ns3.
According to the TCP vegas, in slow start the congestion window increases every other RTT but it is not followed in either linux or ns3 implementation of TCP Vegas. In both case, the congestion window increases in every RTT just like Reno. -
Linux implementation contained given below chunk of code whose equivalent code was not found in ns3 implementation of TCP Vegas.
The line 271 of the Linux implementation of TCP Vegas contains the following lines of code:if (tp->snd_cwnd < 2) tp->snd_cwnd = 2; else if (tp->snd_cwnd > tp->snd_cwnd_clamp) tp->snd_cwnd = tp->snd_cwnd_clamp;
The equivalent of the above mentioned piece of code in ns3 implementation of TCP vegas was missing.
-
The the way value of diff is calculated in Linux implementation of TCP Vegas is a little different than the ns3. Linux code for diff calculation :-
rtt = vegas->minRTT; target_cwnd = (u64)tp->snd_cwnd * vegas->baseRTT; do_div(target_cwnd, rtt); diff = tp->snd_cwnd * (rtt-vegas->baseRTT) / vegas->baseRTT;
ns3 code for diff calculation :-
double tmp = m_baseRtt.GetSeconds () / m_minRtt.GetSeconds (); targetCwnd = static_cast<uint32_t> (segCwnd * tmp); diff = segCwnd - targetCwnd;
In case of linux implementation of TCP Vegas, the value of diff by referring to the linux code can be written as,
`diff = tp->snd_cwnd * (vegas->minRTT - vegas->baseRTT) / vegas->baseRTT; `
While in ns3 implementation of TCP Vegas, the value of diff can be inferred as,
diff= segCwnd * ( m_minRtt.GetSeconds () -m_baseRtt.GetSeconds () ) / m_minRtt.GetSeconds ()
The denominator value of diff in both linux and ns3 are different in one case it is baseRTT while in other it is minRTT.