Someone with more clue can chime-in. Based on my limited understanding:
On 09/07/17 at 06:09P, Beyers Cronje wrote:
> I'm busy implementing BBR in our experimental protocol, but hope someone
> can clarify something for me. Our current implementation is modeled on RFC 6675
> (SACK based loss recovery) to detect and process fast recovery. The BBR
> draft does not specify *when* to enter fast recovery and *what* to send
> during fast recovery, it only specifies how to modulate cwnd during fast
> recovery and after existing fast recovery.
That's how BBR is supposed to behave.
https://tools.ietf.org/html/draft-cardwell-iccrg-bbr-congestion-control-00
provides what BBR is supposed to do.
Detect loss: Traditional (N dupacks, fack, etc) OR RACK
Modulate cwnd and a lot of other magic: BBR
What to send during recovery: rfc6675 OR much simpler version based on RACK.
> So would it be reasonable to say
> that I should use the methods as specified in RFC 6675 to detect duplicate
> ACKs and when to enter fast recovery as well as which packets to send
> during fast recovery, but rely on BBR instead of RFC 6675 to modulate cwnd?
I believe this is correct if you are following non-RACK methods to
detect loss.
> How does the Linux implementation handle this?
>
Not totally sure how Linux does it but I believe *what to send* part
becomes much simpler (at least compared to 6675's way of doing that)
when you use RACK to detect loss. Because big part of rfc6675's approach
is the guess work of determining whether a packet is lost or not which
is much simpler with RACK.
One question I have is whether PRR (Proportional rate reduction) is
still needed with BBR or not. I'd think not but would like to confirm.
Cheers,
Hiren