Download presentation
Presentation is loading. Please wait.
1
Mark Claypool, Feng Li and Jae Chung
BBR' - An Implementation of Bottleneck Bandwidth and Round-trip Time Congestion Control for ns-3 Mark Claypool, Feng Li and Jae Chung In Proceedings of the Workshop on ns-3 (WNS3) Mangalore, India, June 2018
2
Revisit model of congested link
Introduction TCP dominant protocol on Internet Yesterday Designed in an era of limited resources – low network bandwidths, small queues Packet loss a sign of congestion Today Router queues can be large (buffer bloat) Packet loss can be from wireless errors Revisit model of congested link
3
Congestion and Bottlenecks
4
Congestion and Bottlenecks
5
Congestion and Bottlenecks
6
Congestion and Bottlenecks
7
Congestion and Bottlenecks
Bandwidth-Delay Product
8
Estimating Optimal Point
9
Estimating Optimal Point
To see both max BW and min RTT Must probe on both sides of BDP!
10
Estimating Optimal Point
N. Cardwell, Y. Cheng, C.S. Gunn, S.H. Yeganeh, and V. Jacobson. BBR: Congestion-Based Congestion Control,Communications of the ACM, 60(2), February 2017. BBR – Bottleneck Bandwidth and Round-trip time Model network Each ACK, update max BW and min RTT Control sending based on model Probe for max BW and min RTT Pace near estimate BW Keep inflight near BDP Goal: high throughput with small bottleneck queue
11
Outline Introduction (done) BBR (next) BBR’ Validation Evaluation
Conclusions
12
BBR – Walk towards max BW, min RTT
13
BBR – STARTUP: exponential search
14
BBR – DRAIN: drain queue built up in STARTUP
15
BBR – PROBE_BW: explore max BW, drain, cruise
16
BBR – PROBE_RTT: check if min RTT changed
17
BBR – State Machine 2 Phases of probing
Warm-up Steady-state 2 Phases of probing Increase inflight to get max BW Lower inflight to get min RTT Apply during Warm-up and Steady-state Warm-up Startup – ramp up quickly (ala Slow Start) Drain – drain built up queue Steady-state ProbeBW – cycle pacing rate to probe BW ProbeRTT – if needed, coordinated dip to probe RTT
18
BBR – Median Latency versus Buffer Size
BBR vs. CUBIC. Synthetic bulk download. 8 flows, bottleneck 128 Kb/s, RTT 40 ms
19
BBR – Mean Goodput versus Loss Rate
BBR vs. CUBIC. Synthetic bulk download. 1 flow, bottleneck 100 Mb/s, RTT 100 ms
20
BBR Status Status of BBR v1.0 Actively working on BBR v2.0
Deployed widely at Google Open source for Linux TCP and QUIC Documented in IETF Internet Drafts ACK aggregation (e.g., WiFi) Packet loss signals Dynamics of sharing with loss- based congestion control FreeBSD NetFlix
21
ns – The Network Simulator
Discrete event simulators ns-1 (LBNL) – 2001 ns-2 (DARPA) – 2010 ns-3 (NSF and INRIA) – present Educational and Research use Yearly workshop (WNS3) Share ideas, code, research Does not support BBR! Implementation of BBR for ns-3
22
Outline Introduction (done) BBR (done) BBR’ (next) Validation
Evaluation Conclusions
23
BBR’ Implementation Protocol states BDP computation
N. Cardwell, Y. Cheng, S. H. Yeganeh, and V. Jacobson. BBR Congestion Control, IETF Draft, July 2017. Y. Cheng, N. Cardwell, S. H. Yeganeh, and V. Jacobson. Delivery Rate Estimation, IETF Draft, July 2017. Developed based on specifications: Protocol states Solution: state machine BDP computation Solution: compute each ACK Delivery rate estimation Solution: hook to record when send Packet pacing Solution: “hijack” at TCP layer
24
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine TCP TcpSocketBase TcpSocketState
25
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState
26
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState SetPacingRate() 2
27
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState SetPacingRate() 2
28
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState DataSend() SetPacingRate() 4 2
29
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState Send() DataSend() SetPacingRate() 5 4 2
30
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState Send() DataSend() SetPacingRate() 5 4 2 SendDataPacket() 6
31
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine PktsAcked() 1 TCP TcpSocketBase TcpSocketState Send() DataSend() SetPacingRate() 5 4 2 (Timer) SendDataPacket() 6 PacePackets() 7
32
BBR’ Implementation BBR’ APP TCP BBR’: On ACK, update RTT & BW
tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine Send() 8 PktsAcked() 1 TCP TcpSocketBase TcpSocketState Send() DataSend() SetPacingRate() 5 4 2 (Timer) SendDataPacket() 6 PacePackets() 7
33
SendDataPacketReal()
BBR’ Implementation BBR’ tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine Send() 8 PktsAcked() 1 TCP TcpSocketBase TcpSocketState Send() DataSend() SetPacingRate() 5 4 2 (Timer) SendDataPacket() 6 PacePackets() 7 SendDataPacketReal() 9
34
SendDataPacketReal()
BBR’ Implementation BBR’ tcb → m_cwnd APP 3 BBR’: On ACK, update RTT & BW BBR’: Compute & set pacing rate BBR’: Compute BDP & set cwnd Device ready to send? Callback to APP APP: call send() TCP: enqueue packet TCP: timer triggers paced send BBR’: on send, book-keeping TCP: actually send TcpBbr BulkSend- Application BbrStateMachine Send() 8 PktsAcked() 1 TCP TcpSocketBase TcpSocketState Send() DataSend() SetPacingRate() 5 4 2 (Timer) SendDataPacket() 6 PacePackets() 7 SendDataPacketReal() 9
35
Outline Introduction (done) BBR (done) BBR’ (done) Validation (next)
Evaluation Conclusions
36
Verification: BBR’ – Basic Bottleneck
Single flow. Bottleneck: 10 Mb/s, 22 ms RTT BBR’ works as expected (based on specification)
37
Verification: BBR’ – Basic Bottleneck
(Estimated versus Actual) BBR’ accurately infers RTT and BW
38
Validation: BBR’ versus BBR – Steady State
Single flow. Bottleneck: 10 Mb/s, 40 ms RTT BBR’ looks similar to BBR
39
Validation: BBR’ versus BBR – Bwidth Increase
Single flow. Bottleneck: 40 ms RTT. Time 20: 10 Mb/s 20 Mb/s BBR’ looks similar to BBR
40
Validation: BBR’ versus BBR – Bwidth Decrease
Single flow. Bottleneck: 40 ms RTT. Time 40: 20 Mb/s 10 Mb/s BBR’ looks similar to BBR
41
Outline Introduction (done) BBR (done) BBR’ (done) Validation (done)
Evaluation (next) Conclusions
42
Evaluation: BBR’ vs. CUBIC – Wired
BBR’ has similar Throughput, but lower RTT
43
Evaluation: BBR’ vs. CUBIC – Wireless
5 km Evaluation: BBR’ vs. CUBIC – Wireless Results for 4G LTE similar to wired
44
Evaluation: BBR’ vs. CUBIC – Wireless
0 – 20 km Evaluation: BBR’ vs. CUBIC – Wireless BBR’ has similar Throughput, but lower RTT with distance
45
Apoova Lad and Chengle Zhang for early work
Conclusions Evolution of networks needs evolution of TCP BBR promising, but needs more vetting ns-3 network simulator great for vetting, but no BBR BBR’ – Implementation of BBR for ns-3 Use existing CC code base Integrate with other NS layers Validation – looks like BBR Evaluation compared to CUBIC Similar throughputs Lower RTTS Acknowledgements Apoova Lad and Chengle Zhang for early work
46
Future Work Incorporate more BBR features
Application limited flows Adverse Internet conditions – packet reordering, ACK loss Adjustments of BBR parameters Pacing Gain rates Evaluation over more network conditions Competing protocol stacks Wireless (WiFi and LTE) Queue sizes (small, super large)
47
Mark Claypool, Feng Li and Jae Chung
BBR' - An Implementation of Bottleneck Bandwidth and Round-trip Time Congestion Control for ns-3 Mark Claypool, Feng Li and Jae Chung In Proceedings of the Workshop on ns-3 (WNS3) Mangalore, India, June 2018
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.