Experiment to evidence the presence of bufferbloat in modern networks
On connecting two digital circuits operating at different rates, it is necessary use a buffer, a temporary storage memory for data while it’s been moved from one circuit to the other. In digital communications networks, like Internet, the data link with the Internet Service Provider has a limited rate, usually very lower than the rate at a local network, thus requiring a buffer between the local network and the Internet. Furthermore, the data are grouped in packets and transmitted via a medium that can be shared by multiple simultaneous communications sessions. On traversing network nodes, like routes or switches, the buffer is utilized to queue the packets with the same egress interface. When the buffer has an excessive capacity, even a high-capacity link may become unusable. Applications that consume too much bandwidth, like file download, attachments upload, peer-to-peer file sharing, tend to fill the buffer rapidly with their packets. Other applications sensible to latency and packet delay variation (jitter) such as VoIP, on-line gaming, web browsing are affected, because many other packets queued before theirs. In extreme cases, the effective rate of transmitted data may be reduced to zero, lowering the users’ quality of service and quality of experience. This phenomenon is named Bufferbloat. The Bufferbloat is one of the major reasons why consumers complain about the quality of the service provided by their ISPs and one of the reasons for providers to use traffic shapping, classifying and prioritizing traffic according to its own policy, in order to optimize the available bandwidth. This project will use a low cost wireless router, with similar technology to those most consumers have today, to show the Bufferbloat and will detail its causes
RTT (GETTYS e NICHOLS, 2012)
rrdtool graph "$2_bw.png" -a PNG -w 550 -h 240 \
--x-grid SECOND:10:SECOND:30:SECOND:30:0:"%H:%M:%S" \
-t "$2" \
-s -$1 \
'DEF:in='/tmp/rrd/openwrt/interface-eth1/if_octets.rrd':rx:AVERAGE' \
'DEF:out='/tmp/rrd/openwrt/interface-eth1/if_octets.rrd':tx:AVERAGE' \
'CDEF:out_inv=out,-1,*' \
'AREA:in#32CD32:Entrada:STACK' \
'LINE1:in#336600' \
GPRINT:in:"MAX: Maxima\\: %5.1lf %sb/s" \
GPRINT:in:"AVERAGE:Media\\: %5.1lf %Sb/s" \
GPRINT:in:"LAST: Atual\\: %5.1lf %Sb/s\\n" \
'AREA:out#4169E1:Saida:STACK' \
'LINE1:out#0033CC' \
GPRINT:out:"MAX: Maxima\\: %5.1lf %sb/s" \
GPRINT:out:"AVERAGE:Media\\: %5.1lf %Sb/s" \
GPRINT:out:"LAST: Atual\\: %5.1lf %Sb/s\\n" \
'HRULE:0#000000' \
rrdtool graph "$2_rtt.png" -a PNG -w 550 -h 240 \
--x-grid SECOND:10:SECOND:30:SECOND:30:0:"%H:%M:%S" \
-t "$2" \
-s -$1 \
'DEF:rttu='/tmp/rrd/openwrt/ping/ping-www.uol.com.br.rrd':value:AVERAGE' \
'DEF:rttg='/tmp/rrd/openwrt/ping/ping-www.google.com.br.rrd':value:AVERAGE' \
'CDEF:scaled_rttu=rttu,20000,*' \
'CDEF:scaled_rttg=rttg,20000,*' \
'LINE2:rttu#CC3300:RTT www.uol.com.br ' \
GPRINT:rttu:"MAX:Maximo\\: %5.1lf %sms" \
GPRINT:rttu:"AVERAGE:Media\\: %5.1lf %sms" \
GPRINT:rttu:"LAST:Atual\\: %5.1lf%Sms\\n" \
'LINE2:rttg#CC9900:RTT www.google.com.br' \
GPRINT:rttg:"MAX:Maximo\\: %5.1lf %sms" \
GPRINT:rttg:"AVERAGE:Media\\: %5.1lf %sms" \
GPRINT:rttg:"LAST:Atual\\: %5.1lf%Sms\\n"
GETTYS, J.; NICHOLS, K. Bufferbloat: Dark Buffers in the Internet. Communications of the ACM, v. 55, n. 1, p. 55-65, January 2012.