[UDT] Errors in app/cc.h
Brought to you by:
lilyco
From: Harald s. <sc...@rr...> - 2006-07-26 16:53:28
|
Hi, there are some errors in the implementation of BIC and Scalable in app/cc.h. o when receiving an DUPACK, m_issthresh is not reduced. (m_dCWndSize is set to m_issthresh after the first non duplicate ACK arrives. So m_dCWndSize is not reduced at all.) o It is necessary to distinguish between SlowStart and BICSlowStart. o If BIC is in BICSlowStart and an DUPACK arrives, BICSlowStart must be aborted. I changed some Parameters Medienberichten in TCP-BIC to achieve an similar behaviour than Linux-BIC. (BIC is the default Congestion Control algorithm since Kernel 2.6.13). This can of course easily be revoked.... diff app/cc.h app/cc.h_org 42d41 < m_bBICSlowStart = false; 113,114c112 < bool m_bBICSlowStart; < --- > 137d134 < { 139,141d135 < if (m_dCWndSize >= m_issthresh) < m_bSlowStart = false; < } 143d136 < { 145d137 < } 154d145 < m_bSlowStart = false; 156,164c147,150 < { < m_issthresh *= 0.5; < m_dCWndSize = m_issthresh; < } < else < { < m_issthresh=getPerfInfo()->pktFlightSize*0.875; < m_dCWndSize=m_issthresh; < } --- > m_dCWndSize *= 0.5; > else > m_dCWndSize *= 0.875; > 243c229 < if (!m_bBICSlowStart) --- > if (!m_bSlowStart) 245,246c231,232 < if ((m_dTargetWin - m_dCWndSize) < m_iSMax) < m_dCWndSize += (m_iSMax/36)/m_dCWndSize; --- > if (m_dTargetWin - m_dCWndSize < m_iSMax) > m_dCWndSize += (m_dTargetWin - m_dCWndSize)/m_dCWndSize; 248a235 > 256c243 < m_bBICSlowStart = true; --- > m_bSlowStart = true; 271c258 < m_bBICSlowStart = false; --- > m_bSlowStart = false; 283,284c270 < m_issthresh=(getPerfInfo()->pktFlightSize)*0.7; < m_dCWndSize = m_issthresh; --- > m_dCWndSize *= 0.875; 287a274 > { 290c277 < --- > } 292d278 < m_bBICSlowStart = false; 296,299c282,285 < static const int m_iLowWindow = 16; < static const float m_iSMax = 16; < static const float m_iSMin = 0.1; < static const int m_iDefaultMaxWin = 100000; --- > static const int m_iLowWindow = 38; > static const int m_iSMax = 32; > static const int m_iSMin = 1; > static const int m_iDefaultMaxWin = 1 << 29; Bye, Harald |