Wie vergleiche ich die Leistung von externen DNS-Lookups?

14

Ich betrachte die öffentlichen DNS-Server von Google als externen DNS für mein Netzwerk. Derzeit verwende ich die DNS-Server meines Internetdienstanbieters. Ich habe in der Vergangenheit auch über OpenDNS nachgedacht, mich aber letztendlich entschieden, nicht zu springen.

Ich möchte ein Benchmarking durchführen können, wie schnell die jeweiligen Server in der Lage sind, unsere DNS-Anfragen zu bearbeiten. Ich sehe nichts in nslookup, das helfen würde.

Wie kann ich die Roundtrip-Zeiten für extern bereitgestelltes DNS testen?

Mike L
quelle

Antworten:

5

Sie können ein Paketerfassungsprogramm (Filtern nach DNS) verwenden, um die DNS-Abfrage- / Antwortzeiten zu verfolgen. Sie können dies auf Ihrem Computer oder auf Ihrem internen DNS-Server (falls vorhanden) ausführen. Bei annähernd gleichen Bedingungen sollten Sie sich einen Überblick darüber verschaffen, wie schnell Google DNS mit Ihrem Internetdienstanbieter verglichen wird.

Joeqwerty
quelle
5
Der DNS-Dissector von Wireshark verfolgt Anfragen und Antworten. Mit dem Anzeigefilter "dns.time" kann die Antwortzeit ermittelt werden.
Gerald Combs
40

Sie können einfach digundgrep

$ dig @8.8.8.8   www.rimuhosting.com | grep "Query time:"
;; Query time: 15 msec
$ dig @4.2.2.1   www.rimuhosting.com | grep "Query time:"
;; Query time: 289 msec
Pascal
quelle
13

Verwenden Sie den Domain Name Speed ​​Benchmark von GRC .

nrgyz
quelle
Ich habe dieses Tool ausprobiert ... es rockt!
Mike L
2
Ich habe GRC's Benchmark ausprobiert, nachdem ich Googles namebench ausgeführt habe. Laut Google ist es 8.8.4.4. Schneller als andere. Die angepasste Liste von GRC mit 8.8.4.4 zeigte jedoch, dass Google eine der langsamsten und nur unwesentlich schnelleren ist als mein derzeit von Comcast bereitgestelltes DNS. Die schnellsten waren alle von Level 3 Communications. Ich vertraue dem DNS-Benchmark von GRC gegenüber dem von Google. Und GRCs sind in Assembly geschrieben und werden aus einer einzigen 184-KB-Datei ausgeführt. Beeindruckend!
Brian Boatright
Seien Sie vorsichtig bei GRCs, wenn Sie nicht in den USA sind. Es scheint nicht viele (irgendwelche?) Nicht in den USA gehostete Server zu testen.
NickG
3

Ich habe mir auch namebench - Googles Open Source DNS Benchmark Utility - angesehen. Es war sehr umfassend.

Mike L
quelle
Link verfällt :-(
Pol Hallen
Die mit (v1.3) verknüpfte Version von namebench ist mittlerweile ziemlich alt. Es gibt ein aktualisiertes (v2) Repository auf GitHub: github.com/google/namebench, das DNSSEC, CDN-Benchmarking usw. unterstützt.
Patrick
2

Das Firebug-Plugin für Firefox und IE verfügt über eine Registerkarte "net", auf der die Ladezeit für jede Dateianforderung grafisch dargestellt wird.

Es unterteilt es in Aktivitäten, einschließlich DNS-Lookups, die in Grün angezeigt werden.

Nexus
quelle
2

Das einfache Shell-Skript qtest.sh kann dafür verwendet werden:

% qtest -n3 "A a.gtld-servers.net" 172.19.1.1 62.4.16.70 62.4.17.69 208.67.222.222 208.67.220.220 156.154.70.1 156.154.71.1  
3 172.19.1.1/172.19.1.1
49 62.4.17.69/62.4.17.69
61 208.67.222.222/208.67.222.222

Hier ist 172.19.1.1ein lokaler Resolver schneller, gefolgt vom ISP-Resolver und dann von OpenDNS.

bortzmeyer
quelle
2

Ich habe ein kleines nettes Skript geschrieben, um die Verbindung zu DNS-Servern zu bewerten:

cat >test_dns_list_speed.sh
#!/usr/bin/env ksh
site="www.google.com"
IPfile="$1"
samples=$2

if [ ! -f "$IPfile" ] || ! echo "$samples"|egrep -q "[0-9]+" ; then
  echo "test_dns_list_speed.sh <file-ip-list> <samples>"
  echo "<file-ip-list>       newline separated list of DNS server IP adresses"
  echo "<samples>            how many DNS resolution samples to take"
  echo "PURPOSE:"
  echo "          collect statistics about response times from list of DNS servers"
  exit 1
fi

typeset -i i

while [ $i -lt $samples ]; do
  i=$i+1
  for IP in `cat $IPfile`; do
    time=`dig @$IP $site| awk '/Query time:/ {print " "$4}'`
    IPtrans=`echo $IP|tr \. _`
    eval `echo result$IPtrans=\"\\$result$IPtrans$time\"`
  done
done

for IP in `cat $IPfile`; do
  IPtrans=`echo $IP|tr \. _`
  printf "%-15s " "$IP"; echo -e `eval "echo \\$result$IPtrans"`|tr ' ' "\n"|awk '/.+/ {rt=$1; rec=rec+1; total=total+rt; if (minn>rt || minn==0) {minn=rt}; if (maxx<rt) {maxx=rt}; }
             END{ if (rec==0) {ave=0} else {ave=total/rec}; printf "average %5i     min %5i     max %5i ms %2i responses\n", ave,minn,maxx,rec}'
done

./test_dns_list_speed server_list 20
202.93.142.10   average   949     min   523     max  2229 ms 20 responses
202.93.142.20   average   897     min   515     max  2017 ms 20 responses
208.67.222.222  average  1235     min   530     max  3362 ms 20 responses
8.8.8.8         average   759     min   529     max  1624 ms 20 responses
PeZa
quelle
1

Mit ping können Sie herausfinden, wie lange es dauern würde, bis sich ein Paket zwischen Ihrem Server und den DNS-Servern hin und her bewegt. Grundsätzlich gilt: Niemals ändern, was funktioniert.

Ein Nachteil von OpenDNS ist, dass Domänen, die nicht existieren, möglicherweise mit einem A-Eintrag auf die OpenDNS-Suchseite reagieren, da diese dazu tendiert. Google tut dies derzeit nicht, aber es wäre dumm anzunehmen, dass sie DNS-Resolvern lediglich nichts bieten, was sie davon profitieren könnten.

gekkz
quelle
Wenn ich eine Antwort hätte teilen können, hätte ich. Ich mochte den Ping-Test wegen seiner Einfachheit. Ich könnte es gegen alle laufen lassen und mir dann die Durchschnittswerte ansehen. Hier wollte ich mir zusätzlich zum Roundtrip für die Pakete die Antwortzeiten für die Abfrage selbst ansehen und entschied mich für die Paketerfassung. Mehr Arbeit zum Einrichten und Testen, aber mehr Aufwand für die tatsächliche Leistung des externen Servers. Vielen Dank!
Mike L
1
Schlechte Idee, Ping zu verwenden. Nicht alle Server antworten auf Ping und es gibt keine Garantie dafür, dass die Antwortzeit bei DNS und ICMP gleich ist.
bortzmeyer
0

dnsevalvon dnsdiag funktioniert unter Windows Linux und Mac wie ein Zauber. (viel besser als die veraltete namebench) auf github herunterladen

Um es zu verwenden, schreiben Sie zuerst eine Textdatei, in der jeder DNS, den Sie testen möchten, eine Zeile mit seiner IP-Adresse enthält mylist.txt:

8.8.8.8
192.168.178.1

und dann rennen

./dnseval -f mylist.txt yahoo.com     # latency for cached sites
./dnseval -m -f mylist.txt yahoo.com  # latency for sites not in cache

Obwohl dies nicht die Cache-Größe der Server überprüft, ist es ein viel einfacherer und schnellerer Ansatz, und ich gehe davon aus, dass er gut mit der tatsächlichen Leistung korreliert.

Jan-Glx
quelle