Skip to content
This repository has been archived by the owner on Aug 28, 2023. It is now read-only.

Why a_aimd can be set to 1 #68

Closed
larseggert opened this issue Jun 1, 2021 · 9 comments · Fixed by #74
Closed

Why a_aimd can be set to 1 #68

larseggert opened this issue Jun 1, 2021 · 9 comments · Fixed by #74
Assignees
Labels

Comments

@larseggert
Copy link
Contributor

Yoshi said:

9: Section 4.3 "Note that once W_est reaches W_max, that is, W_est >= W_max, ..."

I might miss something, but I'm not sure why a_aimd can be set to 1 to be compatible with AIMD TCP.
Does this mean b_cubic is also updated? If not, why this can be compatible?

@larseggert larseggert added WG LC help wanted Looking for someone resolve this issue labels Jun 1, 2021
@goelvidhi
Copy link
Contributor

This is discussed in #2. Note that we have updated the AIMD friendly formula to make it byte based just like New Reno. We have also removed B_cubic.
Screen Shot 2021-06-03 at 12 44 50 AM

@goelvidhi goelvidhi removed the help wanted Looking for someone resolve this issue label Jun 3, 2021
@goelvidhi goelvidhi self-assigned this Jun 3, 2021
@larseggert
Copy link
Contributor Author

@nsdyoshi does this address your comment?

@nsdyoshi
Copy link

nsdyoshi commented Jun 4, 2021

Sorry.. it's still not clear to me. I'm wondering the following 2 points.

  • It seems to me that W_est has two phases in cwnd increasing. But, I believe this kind of behavior doesn't exist in Reno. I'm not sure why it has to have two phases.
  • if setting a_aimd to 1 is compatible with AIMD TCP, a_aimd = 3 * (1-b_cubic) / (1+b_cubic) is not compatible with AIMD TCP?

@goelvidhi
Copy link
Contributor

goelvidhi commented Jun 5, 2021

It seems to me that W_est has two phases in cwnd increasing. But, I believe this kind of behavior doesn't exist in Reno. I'm not sure why it has to have two phases.

Two phases because after loss, Cubic reduces its congestion window to 0.7x while New Reno reduces it to 0.5x. To have the same increase curve in AIMD friendly region, for Cubic, Alpha_aimd is < 1

if setting a_aimd to 1 is compatible with AIMD TCP, a_aimd = 3 * (1-b_cubic) / (1+b_cubic) is not compatible with AIMD TCP?

This is again the same reasoning. Before the cwnd reaches W_max, Cubic needs to be more conservative so alpha_aimd = 0.529 instead of 1. After we have reached the previous cwnd, i.e. W_max, Cubic can have the same alpha_aimd (i.e. 1) as New Reno has.

@nsdyoshi
Copy link

nsdyoshi commented Jun 5, 2021

Hmm. I'm not sure about it.

In my understanding, alpha_aimd = 0.529 is chosen because AMID(1, 0.5) =AIMD(0.529, 0.7).
If you change it to 1, it will be AIMD(1, 0.7) which is more aggressive than AIMD(1, 0.5)

@lisongxu
Copy link
Contributor

lisongxu commented Jun 8, 2021

The throughput model of AIMD(alpha, beta) assumes a deterministic loss model where a packet is lost every time when the cwnd reaches w_max.

The "a_aimd can be set to 1" is proposed to clearly describe the behavior of CUBIC when cwnd > w_max.

@goelvidhi
Copy link
Contributor

goelvidhi commented Jun 8, 2021

I had explained this in the last IETF meeting. Here is the diagram I used. For low BDPs when we use the AIMD friendly equation, alpha_aimd = 0.529 only has meaning until we reach W_max. After that New Reno and Cubic should behave the same. Otherwise, Cubic will have slower growth than New Reno.
Screen Shot 2021-06-07 at 7 31 34 PM

@nsdyoshi
Copy link

nsdyoshi commented Jun 9, 2021

OK. I understand the concept. Thank you so much. But, It seems to me the sentence looks a bit confusing.
I am thinking about something like the below, but there might be better descriptions for this.

Note that once W_est reaches W_max, that is, W_est >= W_max,
α__aimd_ SHOULD be set to 1 because we don't know what new W_max will be at this point.
This ensures CUBIC to achieve the same congestion window increment as AIMD TCP.

@lisongxu
Copy link
Contributor

lisongxu commented Jun 9, 2021

Thank you, Yoshi, for your suggestion!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants