Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorporate F-RTO #409

Merged
merged 8 commits into from
Mar 26, 2017
Merged

Incorporate F-RTO #409

merged 8 commits into from
Mar 26, 2017

Conversation

ianswett
Copy link
Contributor

No description provided.

Copy link
Contributor

@janaiyengar janaiyengar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for writing this up, Ian. A few comments

@@ -248,6 +248,10 @@ tlp_count:
rto_count:
: The number of times an rto has been sent without receiving an ack.

largest_sent_before_rto:
: The last packet number sent prior to the first transmission due to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: change phrase to "prior to the first retransmission timeout"

@@ -372,6 +377,12 @@ Pseudocode for OnPacketAcked follows:

~~~
OnPacketAcked(acked_packet_number):
// If a packet sent prior to RTO was acked, then the RTO
// was spurious. Otherwise, inform congestion control.
// Similar to the goal of F-RTO {{?RFC5682}}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this last line from here and add it (now or later) to the text description.

if (end_of_recovery < largest_lost_packet.packet_number):
end_of_recovery = largest_sent_packet
congestion_window *= kLossReductionFactor
congestion_window = max(congestion_window, kMinimumWindow)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: combine this line with the previous one:
congestion_window =
max(congestion_window * kLossReductionFactor, kMinimumWindow)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried, but it ends up taking up 3 lines, so I just kept it as is.


~~~
TimeToSend(packet_size):
if (bytes_in_flight + packet_size > congestion_window)
return infinite
pacing_coefficient = 1.25
if (congestion_window < ssthresh)
pacing_coefficient = 2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need a pacing coeff of 2 here. I never understood why FQ did this, but I don't think we need to have this in the doc. In general I'm less certain that we want to describe the pacing impl as part of the congestion controller... I'm comfortable with definiing the TimeToSend interface without implementing it here. For now, I would at least remove the use of pacing_coeff here.

@janaiyengar janaiyengar merged commit a1a885f into master Mar 26, 2017
@martinthomson martinthomson deleted the ianswett-frto branch April 21, 2017 05:27
@martinthomson martinthomson added the design An issue that affects the design of the protocol; resolution requires consensus. label May 22, 2017
@martinthomson martinthomson mentioned this pull request May 22, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants