<div dir="ltr">Thanks for the clarification. We did in fact detect initial configuration issues with the default TCP 3 backlog, but once we'd put this up to 2000 we only had one brief window of RST congestion as detected by a simple TCP filter. This test was for a domainspace which serves around 250,000 experiments per day, each representing 4 DNS queries, none of which could be cached. So it was at 1,000,000 q/day which is obviously a low sustained query rate of around 10 q/sec. I suspect with better kernel knowledge we could have avoided any server forced RST and serve a higher load. Certainly, a TCP based DNS service faces a lot of questions about how its designed and scaled.<div>
<br></div><div>I believe our goal was to find out how many clients, measured by resolver, failed to complete a TCP forced DNS query. Other people will be looking at the server side, that wasn't what we were primarily exploring. People who want to consider TCP based DNS need both sides of the questionspace filled, so choosing to analyse client failure isn't the whole picture, but it is part of the picture.<br>
<div><br></div><div>Your canard reply makes much better contextual sense now</div><div><br></div><div>cheers</div><div><br></div><div>-george</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 21, 2013 at 4:16 PM, Paul Vixie <span dir="ltr"><<a href="mailto:paul@redbarn.org" target="_blank">paul@redbarn.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
George Michaelson wrote:<br>
> ...<br>
<div class="im">> So, while I understand we're not DNS experts and we may well have made some mistakes, I think a one word 'canard' isn't helping.<br>
<br>
</div>there is no way to either get to or live in a world where dns usually<br>
requires tcp. there would be way too much state. most people are capable<br>
of writing the one-line perl script that will put a dns responder into<br>
tcp exhaustion and keep it there at very little cost to the attacker,<br>
but those same people can read section 5 of RFC 5966 and not see the<br>
threat. granted that if all name servers miraculously implemented the<br>
recommendation "servers MAY impose limits on the number of concurrent<br>
TCP connections being handled for any particular client" then the perl<br>
script would have to be longer than one line, there's just no world there.<br>
<br>
had the original dns tcp protocol been structured so that the server<br>
closes and the clients won't syslog anybody or otherwise freak out when<br>
the server closes, we could imagine a high transaction rate on<br>
short-lived connections. tcp's 3xRTT and 7-packet minimum would seem<br>
harsh but at least we'd have some hope of goodput during deliberate<br>
congestion attacks.<br>
<br>
an experiment that looks at this from the client's point of view tells<br>
us nothing about the server's availability during congestion. i could<br>
wish that measurements of tcp dns performance would include a caveat<br>
such as "this has not been tested at internet scale" or even<br>
"internet-wide dependence on dns tcp may be vulnerable to trivial denial<br>
of service attacks".<br>
<br>
almost everybody who looks at this says "just use TCP". if the solution<br>
to the bcp38 problem in DNS were that easy, we would not have written<br>
<<a href="https://www.usenix.org/legacy/publications/login/2009-12/openpdfs/metzger.pdf" target="_blank">https://www.usenix.org/legacy/publications/login/2009-12/openpdfs/metzger.pdf</a>><br>
and william would not have written RFC 6013.<br>
<br>
it's also worth looking again to<br>
<<a href="http://tools.ietf.org/html/draft-eastlake-dnsext-cookies-02" target="_blank">http://tools.ietf.org/html/draft-eastlake-dnsext-cookies-02</a>>.<br>
<span class="HOEnZb"><font color="#888888"><br>
vixie<br>
</font></span></blockquote></div><br></div>