Skip to content

cc/cubic: consider >2 MSS increase on ACK #3113

@mxinden

Description

@mxinden

Currently on_packets_acked, we at most increase by 2 MSS per ACK:

// If enough credit has been accumulated already, apply them gradually.
// If we have sudden increase in allowed rate we actually increase cwnd gently.
if self.acked_bytes >= bytes_for_increase {
self.acked_bytes = 0;
self.congestion_window += self.max_datagram_size();
}
self.acked_bytes += new_acked;
if self.acked_bytes >= bytes_for_increase {
self.acked_bytes -= bytes_for_increase;
self.congestion_window += self.max_datagram_size(); // or is this the current MTU?
}
// The number of bytes we require can go down over time with Cubic.
// That might result in an excessive rate of increase, so limit the number of unused
// acknowledged bytes after increasing the congestion window twice.
self.acked_bytes = min(bytes_for_increase, self.acked_bytes);

I am not sure this artificial limit is needed, especially since outgoing packets will be paced.

This code was added in #1074.

Note that the pacer was already in place (#618) at this time, i.e. the 2 MSS limit was likely not due to missing a pacer.

I don't think the 2 MSS limit is specified anywhere. Please correct me if I am wrong. RFC 9002 suggests an increase relative to the amount of bytes acked. If I understand RFC 3465 correctly, the suggested behavior is as well allowed.

//CC @ddragana and @mwelzl as discussed earlier

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions