[Bloat] Requirements for bufferbloat to occur

sahil grover sahilgrover013 at gmail.com
Thu Apr 9 06:26:53 EDT 2015


Hi David Sir,

Sorry for replying late..but i was v. busy with some other work.

Thanks for the detailed explaination

and yes ofcourse, it helped.

Thanks a lot for clearing my doubts.

On Sun, Mar 29, 2015 at 11:32 PM, David Lang <david at lang.hm> wrote:

> On Sun, 29 Mar 2015, sahil grover wrote:
>
>  can you please explain me  the concept of  delay-bandwidth product,window
>> size and buffer size(or something related with pipe size and packets in
>> flight).
>>
>
>
> These are several different concepts, all related to network perfromance,
> but most unrelated to buffer sizing.
>
> Any network connection is either 100% used, or idle if you look at a small
> enough timeframe. When the network connection finishes sending one packet,
> it is idle until the next packet is available to send. If there is no
> buffer, the connection is idle until the software generates new data to
> send. since this takes time, the connection will be idle. As a result, you
> want to have some buffer so that the software can generate the traffic a
> little earlier than it's needed so that as soon as the network finishes
> sending one packet, it has the next packet available to send.
>
> when you have a router that is receving packets from multiple computers
> and sending it out one link, buffers become even more important, if you
> have two computers send you a packet at the same time, without a buffer
> youc an only send one and the other will have to be dropped. so you need to
> have a buffer to hold the second packet so you can send it out as soon as
> you have time.
>
> bufferbloat is when the buffers are "too large" for the output connection
> and you end up with "too much" data sitting in the buffers waiting to be
> sent. The problem with trying to size buffers is that how long it takes to
> transmit the data in the buffer depends on how large the packets in teh
> buffer are and how fast the connection is. Traditionally, buffers were
> sized in terms of X packets. If you have a buffer that can hold 10ms worth
> of 75 byte packets at 1Gb/sec, but you are connected to a DSL line with an
> upload spped of 1Mb/sec and are sending 1500 byte packets, then your buffer
> now holds 200,000ms worth of traffic.
>
> TCP ramps up it's sending speed until it looses packets (or gets an ECN
> signal), no packets will be dropped until the buffer fills up (in addition
> to the traffic that gets sent), so the buffer will fill up and everything
> that you try to do, including DNS lookups, gaming, VoIP, etc is going to be
> delayed by how long it takes to get through the buffer.
>
>
> window size, delay-bandwidth product, etc are a different aspect of the
> network stack. they limit a little bit how much traffic a single TCP
> connection will try to send without receiving any ack packets for the data.
> The idea is that if you have a 1Gb/s connection, and a 1sping time, to keep
> the connection full you should have 1Gb of taffic "in flight" (i.e. that
> you have sent and not yet received acks for). If your window of allowd
> unacked data is less than this, then you send your limit, then the
> connection goes idle until the receiving side sends the asks
>
> Since the system doesn't actually know how long the path is, or the
> available bandwidth, it again is guessing this and ramping it up until it
> runs into trouble and then slows down
>
>
> so back to your questions, the delay of the link times the bandwidth of
> the link (delay-banseidth produt) determins the ideal window size for a
> given TCP connection. This determins the minimum size of a buffer of
> unacknowleged packets that a system has transmitted. This has _nothing_ to
> do with the buffer size for packets that a system or rotuer is waiting to
> transmit. Bufferbloat happens on the buffer for packets that are waiting to
> be transmitted.  a few ms worth of buffering for packets waiting to be
> transmitted is necessary to keep the connection busy, bufferbloat happens
> when these queues get much larger than this minimum value. There isn't a
> hard limit that separates bloat from non-bloat, but if your queues are over
> a second, you are very clearly way beyond a reasonable size buffer. 10s of
> ms is probably reasonable, 100s of ms is probably not.
>
> Does this help?
>
> David Lang
> _______________________________________________
> Bloat mailing list
> Bloat at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/bloat/attachments/20150409/5b6be66a/attachment-0002.html>


More information about the Bloat mailing list