bbr switch to cubic

127 views
Skip to first unread message

翁佳煌

unread,
Mar 11, 2023, 4:13:57 AM3/11/23
to bbr...@googlegroups.com
Hi,
Because cubic and bbr will cause some problems when coexisting, I think it is because in the case of coexistence, bbr will always detect a small rtt in the probe_bw stage (because CUBIC tends to fill up the queue, drop packets and reduce Its congestion window), causing bbr to fail to enter the probe_rtt stage.
Currently I am revising the code from tcp-bbr.cc in the ns3.33 simulator. I want to modify it to switch to the cubic version when it detects the existence of the cubic version of tcp.
May I ask which part of the bbr should be modified? 
Please correct me if I'm wrong。


Looking forward to hearing from you.
Sincerely,
Alan

Neal Cardwell

unread,
Mar 11, 2023, 6:44:28 PM3/11/23
to 翁佳煌, bbr...@googlegroups.com
On Sat, Mar 11, 2023 at 4:13 AM 翁佳煌 <wengji...@gmail.com> wrote:
Hi,
Because cubic and bbr will cause some problems when coexisting, I think it is because in the case of coexistence, bbr will always detect a small rtt in the probe_bw stage (because CUBIC tends to fill up the queue, drop packets and reduce Its congestion window), causing bbr to fail to enter the probe_rtt stage.

This may be true in some cases. However, my sense is that BBR can (and often does) detect a small RTT in PROBE_BW for other reasons as well:

(1) Often if a bottleneck has a single BBR flow, that BBR flow will fully drain the bottleneck queue (and sometimes measure a new, lower min_rtt) periodically, sometimes once per bandwidth cycle due to using a pacing gain less than 1.0.

(2) Often if a bottleneck has a number of flows but is underutilized at least once per 10 seconds (e.g. if most of the flows are application-limited web or streaming video flows) then the bottleneck queue will fully drain and the BBR flows can often measure a new, lower min_rtt.
 
In cases like (1) or (2) it probably does not make sense to estimate that the flow is competing with CUBIC flows. So "detecting a small RTT in PROBE_BW" may not be a reliable heuristic for detecting competition with CUBIC flows.

 
Currently I am revising the code from tcp-bbr.cc in the ns3.33 simulator. I want to modify it to switch to the cubic version when it detects the existence of the cubic version of tcp.
May I ask which part of the bbr should be modified? 
Please correct me if I'm wrong。

I suppose that, when you have a high-level idea that you want to try out, some steps might be:

+ writing down the pseudocode for the algorithm change you are envisioning
+ reading all the code for the BBR implementation you are planning to modify
+ deciding where in that code to insert your modifications
+ write the code
+ test...

best regards,
neal

 

Looking forward to hearing from you.
Sincerely,
Alan

--
You received this message because you are subscribed to the Google Groups "BBR Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bbr-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bbr-dev/CALumYkN9wh-pmkt3g9ux7GASH%3DtwqJoTg3%2BS53FJb6TfA%2ByY1Q%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages