From: dpreed@reed.com
To: "Mikael Abrahamsson" <swmike@swm.pp.se>
Cc: cerowrt-devel@lists.bufferbloat.net
Subject: Re: [Cerowrt-devel] happy 4th!
Date: Sun, 7 Jul 2013 14:52:58 -0400 (EDT) [thread overview]
Message-ID: <1373223178.486913695@apps.rackspace.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1307040751130.10894@uplift.swm.pp.se>
[-- Attachment #1: Type: text/plain, Size: 3951 bytes --]
Whereever the idea came from that you "had to buffer RTT*2" in a midpath node, it is categorically wrong.
What is possibly relevant is that you will have RTT * bottleneck-bit-rate bits "in flight" from end-to-end in order not to be constrained by the acknowledgement time. That is: TCP's outstanding "window" should be RTT*bottleneck-bit-rate to maximize throughput. Making the window *larger* than that is not helpful.
So when somebody "throws that in your face", just confidently use the words "Bullshit, show me evidence", and ignore the ignorant person who is repeating an urban legend similar to the one about the size of crocodiles in New York's sewers that are supposedly there because people throw pet crocodiles down there.
If you need a simplified explanation of why having 2*RTT-in-the-worst-case-around-the-world * maximum-bit-rate-on-the-path, all you need to think about is what happens when some intermediate huge bottleneck buffer fills up (which it certainly will, very quickly, since by definition the paths feeding it have much higher delivery rates than it can handle).
What will happen? A packet will be silently discarded from the "tail" of the queue. But that packet's loss will not be discovered by the endpoints until the "bottleneck-bit-rate" * the worst-case-RTT * 2 (or maybe 4 if the reverse path is similarly clogged) seconds later. Meanwhile the sources would have happily *sustained* the size of the bottleneck's buffer, by putting out that many bits past the lost packet's position (thinking all is well).
And so what will happen? most of the following packets behind the lost packet will be retransmitted by the source again. This of course *doubles* the packet rate into the bottleneck.
And there is an infinite regression - all the while there being a solidly maintained extremely long queue of packets that are waiting for the bottleneck link. Many, many seconds of end-to-end latency on that link, perhaps.
Only if all users "give up and go home" for the day on that link will the bottleneck link's send queue ever drain. New TCP connections will open, and if lucky, they will see a link with delays from earth-to-pluto as its norm on their SYN/SYN-ACK. But they won't get better service than that, while continuing to congest the node.
What you need is a message from the bottleneck link to say "WHOA - I can't process all this traffic". And that happens *only* when that link actually drops packets after about 50 msec. or less of traffic is queued.
On Thursday, July 4, 2013 1:57am, "Mikael Abrahamsson" <swmike@swm.pp.se> said:
> On Wed, 3 Jul 2013, Dave Taht wrote:
>
> > Suggestions as to things to test and code to test them welcomed. In
>
> I'm wondering a bit what the shallow buffering depth means to higher-RTT
> connections. When I advocate bufferbloat solutions I usually get thrown in
> my face that shallow buffering means around-the-world TCP-connections will
> behave worse than with a lot of buffers (traditional truth being that you
> need to be able to buffer RTT*2).
>
> It would be very interesting to see what an added 100ms
> (<http://stackoverflow.com/questions/614795/simulate-delayed-and-dropped-packets-on-linux>)
> and some packet loss/PDV would result in. If it still works well, at least
> it would mean that people concerned about this could go back to rest.
>
> Also, would be interesting to see is Googles proposed QUIC interacts well
> with the bufferbloat solutions. I imagine it will since it in itself
> measures RTT and FQ_CODEL is all about controlling delay, so I imagine
> QUIC will see a quite constant view of the world through FQ_CODEL.
>
> --
> Mikael Abrahamsson email: swmike@swm.pp.se
> _______________________________________________
> Cerowrt-devel mailing list
> Cerowrt-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel
>
[-- Attachment #2: Type: text/html, Size: 5250 bytes --]
next prev parent reply other threads:[~2013-07-07 18:53 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-03 19:33 Dave Taht
2013-07-04 5:57 ` Mikael Abrahamsson
2013-07-04 13:51 ` Michael Richardson
2013-07-04 15:48 ` Mikael Abrahamsson
2013-07-07 18:52 ` dpreed [this message]
2013-07-08 0:24 ` Mikael Abrahamsson
2013-07-08 17:03 ` Toke Høiland-Jørgensen
2013-07-09 3:24 ` Dave Taht
2013-07-09 6:04 ` Mikael Abrahamsson
2013-07-09 6:32 ` Dave Taht
2013-07-09 7:30 ` [Cerowrt-devel] [Codel] " Andrew McGregor
2013-07-09 13:09 ` Eric Dumazet
2013-07-09 7:57 ` [Cerowrt-devel] " Toke Høiland-Jørgensen
2013-07-09 12:56 ` [Cerowrt-devel] [Codel] " Eric Dumazet
2013-07-09 13:13 ` Toke Høiland-Jørgensen
2013-07-09 13:23 ` Eric Dumazet
2013-07-09 13:25 ` Toke Høiland-Jørgensen
2013-07-09 13:36 ` Eric Dumazet
2013-07-09 13:45 ` Toke Høiland-Jørgensen
2013-07-09 13:49 ` Eric Dumazet
2013-07-09 13:53 ` Toke Høiland-Jørgensen
2013-07-09 14:07 ` Eric Dumazet
2013-07-08 20:50 ` [Cerowrt-devel] " dpreed
2013-07-08 21:04 ` Jim Gettys
2013-07-09 5:48 ` Mikael Abrahamsson
2013-07-09 5:58 ` dpreed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.bufferbloat.net/postorius/lists/cerowrt-devel.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1373223178.486913695@apps.rackspace.com \
--to=dpreed@reed.com \
--cc=cerowrt-devel@lists.bufferbloat.net \
--cc=swmike@swm.pp.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox