30
Bufferbloat is all wet? Bufferbloat is all wet? Stephen Hemminger Stephen Hemminger stephen@network stephen@network plumber.org plumber.org @networkplumber @networkplumber Linuxcon Europe Oct 2014

Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat is all wet?Bufferbloat is all wet?

Stephen HemmingerStephen Hemmingerstephen@[email protected]

@networkplumber@networkplumber

Linuxcon Europe Oct 2014

Page 2: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

BufferbloatBufferbloat

● What is the problemWhat is the problem● What causes the problemWhat causes the problem● SolutionsSolutions

– DemonstrationDemonstration● Current statusCurrent status

– The GoodThe Good– The BadThe Bad– The UglyThe Ugly

Page 3: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Signs of BufferbloatSigns of Bufferbloat

● You might have bufferbloat ifYou might have bufferbloat if– ThroughputThroughput

● Download 10% of advertisedDownload 10% of advertised● Upload doesn't workUpload doesn't work

– LatencyLatency● large (> 200ms)large (> 200ms)● VariableVariable

– And no packet loss!!!And no packet loss!!!

Page 4: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

How bad is it?How bad is it?

Page 5: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Queuing Theory BasicsQueuing Theory Basics

averagetimeinqueueutilization

servicerate1 utilization

Graphic courtesy Sprint, Apricot 2004

From Fred Baker: Bufferbloat!

Page 6: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Network PerformanceNetwork Performance

ThroughputMbits/sec

LatencyRound Trip Time

Fairness

Page 7: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Netalyzr: DownstreamNetalyzr: Downstream

Page 8: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Netalyzr: UpstreamNetalyzr: Upstream

Page 9: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad
Page 10: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Classical TCPClassical TCP

Page 11: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

TCP throughput dynamicsTCP throughput dynamicsIn

crea

sing

Mea

sura

ble

Thr

ough

put

Increasing TCP Window

“knee” “cliff”

Bottleneck Capacity

QueueDepth

meanthroughput effectivewindowmeanroundtriptime

From Fred Baker: Bufferbloat!

Page 12: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Blame LinuxBlame Linux

● Windows XPWindows XP– Maximum window 64kMaximum window 64k

● Windows 7Windows 7– Bandwidth limit to 80 mbitsBandwidth limit to 80 mbits

● AndroidAndroid– Receive window limitedReceive window limited

Page 13: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Blame the customerBlame the customer

● Customers call Customers call supportsupport

● Applications are Applications are using more using more bandwidthbandwidth

● Block and chargeBlock and charge

Page 14: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad
Page 15: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Back to Reality

Page 16: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Benchmark issuesBenchmark issues

● BadBad– Bytes/secBytes/sec– Packes/secPackes/sec– LatencyLatency

Page 17: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Realtime Response Under LoadRealtime Response Under Load

● Use existing toolUse existing tool– NetperfNetperf

● Combine multiple streamsCombine multiple streams– DownloadDownload– UploadUpload– Latency measurementLatency measurement

Page 18: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

FIFO – the defaultFIFO – the default

Høiland-Jørgensen T., Battling Bufferbloat

Ping 1sec!

Upload

Download

Page 19: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Stochastic Fair QueueStochastic Fair Queue

Høiland-Jørgensen T., Battling Bufferbloat

Page 20: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Controlled Delay - codelControlled Delay - codel

Høiland-Jørgensen T., Battling Bufferbloat

Page 21: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Fair Queue Controlled DelayFair Queue Controlled Delay

Høiland-Jørgensen T., Battling Bufferbloat

Page 22: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat statusBufferbloat status

Page 23: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Router

Where is Bufferbloat?Where is Bufferbloat?

BackboneISP ISP

SenderReceiver

ApplicationApplication

TCP

QDisc

TCP

Router

Page 24: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat Solved?Bufferbloat Solved?

● Queuing disciplinesQueuing disciplines– Codel, PIE, ...Codel, PIE, ...

● Linux internal Linux internal – BQL, FQ, PacingBQL, FQ, Pacing

● Default qdiscDefault qdiscSysctl ­w sys.net.core.default_qdisc=fq_codelSysctl ­w sys.net.core.default_qdisc=fq_codel

Yes, many times overYes, many times over

Page 25: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat: The GoodBufferbloat: The Good

● Industry awarenessIndustry awareness● Standards progressStandards progress● Active researchActive research● Open Source Open Source

SolutionsSolutions

Page 26: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat: the BadBufferbloat: the Bad

● Legacy equipmentLegacy equipment– OEM focus on cost not AQMOEM focus on cost not AQM

● Congestion on backboneCongestion on backbone– It's not a bug it's a feature?It's not a bug it's a feature?– Problem is political not technicalProblem is political not technical

Page 27: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat: the UglyBufferbloat: the Ugly

● WirelessWireless– AggregationAggregation– MulticastMulticast– Proprietary firmwareProprietary firmware

Page 29: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Thank youStephen Hemminger@networkplumber

[email protected]

Page 30: Bufferbloat is all wet? - events.static.linuxfound.org · Bufferbloat What is the problem What causes the problem Solutions – Demonstration Current status – The Good – The Bad

Bufferbloat resources

Bufferbloat.net: http://bufferbloat.netEmail Lists: http://lists.bufferbloat.net

IRC Channel: #bufferbloat on chat.freenode.net CeroWrt: http://www.bufferbloat.net/projects/cerowrt Other talks: http://mirrors.bufferbloat.net/Talks

Jim Gettys Blog – http://gettys.wordpress.com RRUL Test- https://github.com/tohojo/netperf-wrapper

A big thanks to the bloat mailing list, Jim, Kathie, Van, and Eric, ISC, the CeroWrt contributors, OpenWrt, the Internet Civil Engineering Institute, and the Google Fiber for their interest and support in the work!