-
Notifications
You must be signed in to change notification settings - Fork 14
Replace modelled TCP Reno window approach with AIMD emulation #20
Comments
I agree, and this is reasonable, as CUBIC is based on time t but AIMD is not. Thanks |
I am not sure what's the AI here - do we need to modify Eq. 3? |
Eq 3 is fine. But we need to change Eq 4 to update W_est for each ACK, instead of using that t/RTT. Thanks |
In my earlier comment, AI = Action Item. In Apple's implementation, I use bytes_acked / cwnd per ACK received instead of t/RTT. That ensures once the entire congestion window is acknowledged, the increase is 1MSS. I didn't file an issue for this as I thought this is an implementation choice. Does the below look like it:
|
How about the following? At the beginning of a congestion avoidance stage,
On every ACK,
|
Yes, that's how an implementation would do it. With this proposal, I think #2 would be good to address as well. I think when we use segments_acked/cwnd instead of t/RTT, the W_est growth after it reached W_max, should use alpha_aimd = 1. |
FYI: freebsd is following the rtt-based tcp-friendly approach. However, we are not particularly fond of this due to the interaction with app-limited/discontinous data availablilty. Changing this into a bytes_acked/cwnd approach, which removes the RTT during that region, sounds good. |
I like Lisong's proposal to use Segments_acked or Rscheff's Bytes_acked. We have changed Linux Cubic several years ago to perform well under the prevalent ACK-thining/compression world (notably for cable and wireless networks). Sometimes we get one ACK for more than one hundred segments. |
Thanks, @yuchungcheng . Could you please take a look at issue 14 for a bug that Google fixed? |
Yuchung Cheng wrote:
The text was updated successfully, but these errors were encountered: