|
Lines 172-178
TcpIllinois::CongestionStateSet (Ptr<TcpSocketState> tcb,
|
Link Here
|
|---|
|
| 172 |
} |
172 |
} |
| 173 |
|
173 |
|
| 174 |
void |
174 |
void |
| 175 |
TcpIllinois::IncreaseWindow (Ptr<TcpSocketState> tcb, uint32_t segmentsAcked) |
175 |
TcpIllinois::SlowStart (Ptr<TcpSocketState> tcb, uint32_t segmentsAcked) |
| 176 |
{ |
176 |
{ |
| 177 |
NS_LOG_FUNCTION (this << segmentsAcked); |
177 |
NS_LOG_FUNCTION (this << segmentsAcked); |
| 178 |
|
178 |
|
|
Lines 182-216
TcpIllinois::IncreaseWindow (Ptr<TcpSocketState> tcb, uint32_t segmentsAcked)
|
Link Here
|
|---|
|
| 182 |
Reset (tcb->m_nextTxSequence); |
182 |
Reset (tcb->m_nextTxSequence); |
| 183 |
} |
183 |
} |
| 184 |
|
184 |
|
| 185 |
if (tcb->m_cWnd < tcb->m_ssThresh) |
185 |
TcpNewReno::SlowStart (tcb, segmentsAcked); |
|
|
186 |
} |
| 187 |
|
| 188 |
void |
| 189 |
TcpIllinois::CongestionAvoidance (Ptr<TcpSocketState> tcb, uint32_t segmentsAcked) |
| 190 |
{ |
| 191 |
NS_LOG_FUNCTION (this << segmentsAcked); |
| 192 |
|
| 193 |
uint32_t segCwnd = tcb->GetCwndInSegments (); |
| 194 |
uint32_t oldCwnd = segCwnd; |
| 195 |
|
| 196 |
if (segmentsAcked > 0) |
| 186 |
{ |
197 |
{ |
| 187 |
segmentsAcked = TcpNewReno::SlowStart (tcb, segmentsAcked); |
198 |
m_ackCnt += segmentsAcked * m_alpha; |
| 188 |
NS_LOG_INFO ("In SlowStart, updated to cwnd " << tcb->m_cWnd << |
199 |
} |
|
|
200 |
|
| 201 |
while (m_ackCnt >= segCwnd) |
| 202 |
{ |
| 203 |
m_ackCnt -= segCwnd; |
| 204 |
segCwnd += 1; |
| 205 |
} |
| 206 |
|
| 207 |
if (segCwnd != oldCwnd) |
| 208 |
{ |
| 209 |
tcb->m_cWnd = segCwnd * tcb->m_segmentSize; |
| 210 |
NS_LOG_INFO ("In CongAvoid, updated to cwnd " << tcb->m_cWnd << |
| 189 |
" ssthresh " << tcb->m_ssThresh); |
211 |
" ssthresh " << tcb->m_ssThresh); |
| 190 |
} |
212 |
} |
| 191 |
else |
|
|
| 192 |
{ |
| 193 |
uint32_t segCwnd = tcb->GetCwndInSegments (); |
| 194 |
uint32_t oldCwnd = segCwnd; |
| 195 |
|
| 196 |
if (segmentsAcked > 0) |
| 197 |
{ |
| 198 |
m_ackCnt += segmentsAcked * m_alpha; |
| 199 |
} |
| 200 |
|
| 201 |
while (m_ackCnt >= segCwnd) |
| 202 |
{ |
| 203 |
m_ackCnt -= segCwnd; |
| 204 |
segCwnd += 1; |
| 205 |
} |
| 206 |
|
| 207 |
if (segCwnd != oldCwnd) |
| 208 |
{ |
| 209 |
tcb->m_cWnd = segCwnd * tcb->m_segmentSize; |
| 210 |
NS_LOG_INFO ("In CongAvoid, updated to cwnd " << tcb->m_cWnd << |
| 211 |
" ssthresh " << tcb->m_ssThresh); |
| 212 |
} |
| 213 |
} |
| 214 |
} |
213 |
} |
| 215 |
|
214 |
|
| 216 |
void |
215 |
void |