Cocoa: Congestion Control Aware Queuing Maximilian Bachl, Tanja Zseby, Joachim Fabini Technische Universit¨ at Wien, Vienna, Austria
Introduction “Bufferbloat” If queues in routers/switches too small: Underutilization Solution: Make queues very large for maximum throughput! New problem: Packets wait a long time (several seconds) in the queue: Bufferbloat December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 1
Introduction CoDel Active Queue Management against Bufferbloat Moving time window of 100 ms Queuing Delay must be < 5 ms once in each window Otherwise: Drop packet(s) December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 2
Introduction Fair Queuing Separate each flow in separate queue No flow can “steal” bandwidth Popular implementation for Linux: fq December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 3
Introduction Fair Queuing Separate each flow in separate queue No flow can “steal” bandwidth Popular implementation for Linux: fq Static buffer size: Buffer often too large or too small December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 3
Introduction fq codel Combining fair queuing with CoDel State-of-the-art Separate queues Each queue managed by CoDel Keeps each flow’s queue < 5 ms Linux implementation: fq codel December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 4
Introduction fq codel Combining fair queuing with CoDel State-of-the-art Separate queues Each queue managed by CoDel Keeps each flow’s queue < 5 ms Linux implementation: fq codel Inadequate interaction with Congestion Control: Cubic doesn’t achieve full throughput or keeps standing queue December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 4
Concept Buffer too large window (packets in flight) BDP+ packet loss buffer size optimal minimum standing queue window (BDP) time December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 5
Concept Buffer too small window (packets in flight) under- BDP+ utilized packet loss buffer size link optimal minimum window (BDP) time December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 6
Concept Measuring a flow’s congestion control Get period between reductions of the congestion window If there’s a standing queue: Reduce buffer If the link was idle: Increase buffer December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 7
Concept Measuring a flow’s congestion control Get period between reductions of the congestion window If there’s a standing queue: Reduce buffer If the link was idle: Increase buffer → Problem : How to get the interval between reductions of the congestion window? December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 7
Concept Interval mechanism – Concept 1. Wait for previous longest interval between two packet losses times 0.5 and continue waiting until the next packet loss 2. Take longest interval between two packet losses since previous longest interval ended 3. Adjust buffer accordingly 4. Repeat December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 8
Concept Interval mechanism – Illustration packet loss intervals longest interval longest interval longest interval guard interval guard interval guard interval December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 9
Concept Parameters Multiplier (default 1.25) Needed because of BBR, for Cubic and Reno 0.5 is sufficient Maximum buffer increase (default 2) Otherwise huge increase if link speed suddenly dramatically increases Maximum guard interval (default 1 s) Otherwise giant guard intervals possible and slow adaptation December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 10
Concept Parameters Multiplier (default 1.25) Needed because of BBR, for Cubic and Reno 0.5 is sufficient Maximum buffer increase (default 2) Otherwise huge increase if link speed suddenly dramatically increases Maximum guard interval (default 1 s) Otherwise giant guard intervals possible and slow adaptation → Worked for all tested scenarios December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 10
Evaluation Setup Implemented on Linux Extension of the fq kernel module Virtual network with py-virtnet All other queuing disciplines for comparison with default parameters December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 11
Evaluation Cubic, fq with 20 Mbit/s, 10 ms Throughput [Mbit/s] 20 15 10 0 10 20 30 40 50 60 Time [s] 100 RTT [ms] 50 0 10 20 30 40 50 60 Time [s] December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 12
Evaluation Cubic, cocoa with 20 Mbit/s, 10 ms Throughput [Mbit/s] 20 15 10 0 10 20 30 40 50 60 Time [s] 60 RTT [ms] 40 20 0 10 20 30 40 50 60 Time [s] December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 13
Evaluation Cubic, cocoa with 20 Mbit/s, 10 ms Throughput [Mbit/s] 40 30 20 0 10 20 30 40 50 60 Time [s] 60 RTT [ms] 40 20 0 10 20 30 40 50 60 Time [s] December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 14
Evaluation Cubic, fq codel with 100 Mbit/s, 100 ms Throughput [Mbit/s] 100 75 50 25 0 50 100 150 200 250 Time [s] 140 RTT [ms] 120 100 0 50 100 150 200 250 Time [s] December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 15
Evaluation Cubic, cocoa with 100 Mbit/s, 100 ms Throughput [Mbit/s] 100 75 50 25 0 50 100 150 200 250 Time [s] 200 RTT [ms] 150 100 0 50 100 150 200 250 Time [s] December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 16
Evaluation BBR, cocoa with 50 Mbit/s, 10 ms Throughput [Mbit/s] 40 30 20 0 10 20 30 40 50 60 Time [s] 75 RTT [ms] 50 25 0 10 20 30 40 50 60 Time [s] December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 17
Discussion Conclusions Throughput increase of ∼ 10% for Cubic and ∼ 25% for Reno compared to fq codel and fq for high BDP connections Same throughput and lower delay for low BDP connections cocoa finds sweet spot of maximal throughput/minimal queue Envisioned deployment close to the Internet’s edge December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 18
Discussion Outlook Use previous flows’ optimal queue for initialization of new flows’ buffers More thorough testing with real-world flows Reinforcement learning to fingerprint flows and adapt queue dynamically using previously learned experience December 3, 2019 Cocoa: Congestion Control Aware Queuing by Maximilian Bachl 19
Cocoa: Congestion Control Aware Queuing Maximilian Bachl, maximilian.bachl@tuwien.ac.at Tanja Zseby, tanja.zseby@tuwien.ac.at Joachim Fabini, joachim.fabini@tuwien.ac.at Technische Universit¨ at Wien, Vienna, Austria
Recommend
More recommend