mtcp-stack / mtcp

mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems
Other
1.98k stars 436 forks source link

Has mtcp really implemented NewReno? #189

Open particle128 opened 6 years ago

particle128 commented 6 years ago

Hi,

We are using mtcp in our project. We ran into some congestion problem, so took a deep look at the congestion control related source code.

For NewReno, when 3 dup ack are received, sender will enter fast retransmission state, setting ssthresh = cwnd/2, and cwnd = ssthresh + 3 * MSS. After a ACK that can acknowledge all outstanding packets when fast retransmission state is entered, sender will exit fast retransmission state, setting cwnd = ssthresh.

But after scanning the code, I didn't find the place for "fast retransmission exit", where cwnd = ssthresh.

Could you kindly point out if I have some misunderstanding? I would really appreciate if you could post the source code or line number.

Thanks a lot, Particle128

eunyoung14 commented 6 years ago

After investigation on the code, I found that we forgot to implement the response to newly acknowledged data which includes "fast retransmission exit" behavior that you mentioned. I'll work on this issue, but it would take a while. If you have any fixes for this issue, I would appreciate you sharing it through a pull request.