Toke Høiland-Jørgensen
LLC 2019 Lund, Sweden, May 2019
Bufferbloat mitigation in the Linux WiFi stack – status and
- ngoing work
1
Bufferbloat mitigation in the Linux WiFi stack status and ongoing - - PowerPoint PPT Presentation
Bufferbloat mitigation in the Linux WiFi stack status and ongoing work Toke Hiland-Jrgensen LLC 2019 Lund, Sweden, May 2019 1 Outline Background: Bufferbloat mitigation in Linux Fixing bloat in the WiFi stack Airtime
LLC 2019 Lund, Sweden, May 2019
1
> toke@redhat.com 2
> toke@redhat.com 3
> toke@redhat.com 4
20 40 60 80 100 Mean induced latency (ms) 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 Mean TCP goodput (Mbit/s) pfifo_fast ared pie codel sfq fq_nocodel fq_codel
> toke@redhat.com 5
A->A A->B A->C A->C B->C B->D A->A A->B A->C A->C B->C B->D A->A A->B A->C A->C B->C B->D A->A A->B A->C A->C B->C B->D A->A A->B A->C A->C B->C B->D 0.0 0.5 1.0 1.5 2.0 2.5 Mbits/s cake cake_dst cake_src cake_triple fq_codel
> toke@redhat.com 6
> toke@redhat.com 7
> toke@redhat.com 8
50 100 150 200 250 300 350 Mean induced latency (ms) 10 20 30 40 50 60 Mean TCP goodput (Mbit/s) pfifo_fast pfifo_fast ared ared pie pie codel codel sfq sfq fq_nocodel fq_nocodel fq_codel fq_codel
> toke@redhat.com 9
1000 *
Qdisc layer MAC layer ath9k driver
*Can be replaced with an arbitrary configuration
Per HW queue (x4) 2 aggr
FIFO
FIFO*
buf_q retry_q TID 123
Prio
buf_q retry_q
TID RR Assign TID
Retries To hardware 123
Prio
Qdisc layer (bypassed) MAC layer ath9k driver HW queue (x4)
2 aggr FIFO RR Assign TID Retries
To hardware
retry_q TID Prio Split flows 8192 (Global limit) retry_q TID
FQ-
CoDel
Prio Split flows 8192 (Global limit)
FQ-
CoDel
> toke@redhat.com 10
101 102 103 Latency (ms) 0.0 0.2 0.4 0.6 0.8 1.0 Cumulative probability
With our solution Without our solution
> toke@redhat.com 11
FIFO FQ-CoDel FQ-MAC Airtime FIFO FQ-CoDel FQ-MAC Airtime FIFO FQ-CoDel FQ-MAC Airtime FIFO FQ-CoDel FQ-MAC Airtime 10 20 30 40 Mbits/s Station 1 Station 2 Station 3 Average
> toke@redhat.com 12
> toke@redhat.com 13
1 |I| T_data(i) ∑ _j∈IT_data(j)
L_i T_data(i)+T_oh
> toke@redhat.com 14
> toke@redhat.com 15
Fast 1 Fast 2 Slow Fast 1 Fast 2 Slow Fast 1 Fast 2 Slow Fast 1 Fast 2 Slow 0.0 0.2 0.4 0.6 0.8 1.0 Airtime share FIFO FQ-CoDel FQ-MAC Airtime fair FQ
> toke@redhat.com 16
FIFO FQ-CoDel FQ-MAC Airtime FIFO FQ-CoDel FQ-MAC Airtime FIFO FQ-CoDel FQ-MAC Airtime FIFO FQ-CoDel FQ-MAC Airtime 10 20 30 40 Mbits/s Station 1 Station 2 Station 3 Average
> toke@redhat.com 17
Kernel mac80211 subsystem Weighted DRR scheduler WiFi hardware Device driver Userspace Policy daemon Assoc / disassoc notifications Station queue state Set station weights Airtime usage Station
Weight Deficits
Station
Weight Deficits
Station
Weight Deficits User configuration Station state tracker
> toke@redhat.com 18
> toke@redhat.com 19
10 20 30 40 Time (s) 0.00 0.25 0.50 0.75 1.00 Airtime share 10 20 30 40 Time (s) 0.00 0.25 0.50 0.75 1.00 Airtime share
> toke@redhat.com 20
> toke@redhat.com 21
> toke@redhat.com 22
> toke@redhat.com 23
> toke@redhat.com 24
> toke@redhat.com 25
> toke@redhat.com 26
> toke@redhat.com 27
> toke@redhat.com 28
> toke@redhat.com 29