-
Notifications
You must be signed in to change notification settings - Fork 14
Initialization #28
Comments
Thanks, @mwelzl. W_last_max should be initialized to 0. By the way, there is a confusing difference between RFC and Linux code: RFC has two variables, W_last_max and W_max, whereas Linux code has only W_last_max that corresponds to W_max in RFC. This is confusing, so I would recommend removing W_last_max from the RFC, as it is used only in Section 4.6. How about changing paragraphs 2, 3, 4 of Section 4.6 as follows? With fast convergence, when a congestion event occurs, we update W_max as follows before the window reduction described in Section 4.5.
At a congestion event, if the current cwnd is less than W_max, this indicates that the saturation point experienced by this flow is getting reduced because of the change in available bandwidth. Then we allow this flow to release more bandwidth by reducing W_max further. This action effectively lengthens the time for this flow to increase its congestion window because the reduced W_max forces the flow to have the plateau earlier. This allows more time for the new flow to catch up to its congestion window size. Then remove the following line from Section 4.5, because W_max is set in Section 4.6 now.
|
Oh yes, this is much better! Thanks! |
This looks good. One thing to note though, earlier we were saving W_last_max = W_max (before applying fast convergence) and now we won't have that state saved. Instead we would always compare with W_max after fast convergence is applied. |
Anyone willing to create a PR for this one? |
I can help with this one. |
@lisongxu could you prepare a PR? we'd like to be able to submit a -01 version to the IETF soon and ask for adoption. |
@larseggert done, thanks |
This is tiny and editorial:
Section 4.7 of RFC 8312 talks about how values are initialized after an RTO; it seems obvious that these values would also be used at the very beginning, but this is never explicitly said. It seems obvious that, at this point, W_last_max should be set to W_max, but how to initialize W_last_max is also not explicitly said (unless I missed it).
The text was updated successfully, but these errors were encountered: