Come posso eseguire il benchmark delle prestazioni delle ricerche DNS esterne?


14

Sto considerando i server DNS pubblici di Google come DNS esterni per la mia rete. Attualmente sto usando i server DNS dal mio ISP. Ho anche considerato OpenDNS in passato, ma alla fine ho deciso di non saltare.

Mi piacerebbe poter confrontare la velocità con cui i rispettivi server sono in grado di soddisfare le nostre richieste DNS. Non vedo nulla in nslookup che possa aiutare.

Come posso testare i tempi di andata e ritorno per il DNS fornito esternamente?

Risposte:


5

È possibile utilizzare un programma di acquisizione di pacchetti (filtro per DNS) per tenere traccia della query DNS e dei tempi di risposta. Puoi eseguirlo sul tuo computer o sul tuo server DNS interno (se ne hai uno). A parità di condizioni, questo dovrebbe darti un'idea generale di quanto velocemente Google DNS viene confrontato con il tuo ISP.


5
Il dissettore DNS di Wireshark esegue il tracciamento di richieste / risposte. Il filtro di visualizzazione "dns.time" può essere utilizzato per trovare il tempo di risposta.
Gerald Combs,

40

Puoi semplicemente dige semplicementegrep

$ 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

13

Ho controllato questo strumento ... è incredibile!
Mike L,

2
Ho provato il benchmark di GRC dopo aver eseguito il namebench di Google. Google ha affermato che l'8.8.4.4 è del 21,1% più veloce di quello degli altri. Tuttavia, l'elenco personalizzato di GRC con l'8.8.4.4 aggiunto mostrava che quello di Google era uno dei più lenti e solo leggermente più veloce del mio attuale DNS fornito da Comcast. I più veloci provenivano tutti dalle comunicazioni di livello 3. Ora mi fido del benchmark DNS di GRC su Google. E GRC è scritto in assembly e viene eseguito da un singolo file 184k. Degno di nota!
Brian Boatright,

Fai attenzione ai GRC se non sei negli Stati Uniti. Non sembra testare molti (qualsiasi?) Server ospitati non statunitensi.
NickG

3

Ho anche dato un'occhiata a namebench - l'utility di benchmark DNS open source di Google. È stato molto completo.


il link scade :-(
Pol Hallen,

La versione di namebench collegata a (v1.3) è piuttosto vecchia ora. C'è un repository (v2) aggiornato su GitHub: github.com/google/namebench che supporta DNSSEC, benchmarking CDN ecc.
Patrick,


2

Il plug-in Firebug per Firefox e IE ha una scheda "net" che offre una rappresentazione grafica del tempo di caricamento per ogni richiesta di file.

Lo suddivide in attività, comprese le ricerche DNS, visualizzate in verde.


2

Il semplice script di shell qtest.sh può essere utilizzato per questo:

% 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

Qui, 172.19.1.1un resolver locale è più veloce, seguito dal risolutore ISP, quindi OpenDNS.


2

Ho scritto un piccolo script per valutare la connessione ai server DNS:

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

1

Puoi usare il ping per capire quanto tempo impiegherebbe un pacchetto a spostarsi avanti e indietro tra il tuo server e i server DNS. Come regola generale: non cambiare mai ciò che funziona.

Uno svantaggio di OpenDNS è che i domini inesistenti potrebbero rispondere con un record A che punta alla pagina di ricerca di OpenDNS, poiché tendono a farlo. Google attualmente non lo fa, ma sarebbe sciocco supporre che stiano semplicemente fornendo ai resolver DNS nulla da guadagnare da esso.


Se avessi potuto dividere una risposta, avrei. Mi è piaciuto il test del ping per la sua semplicità. Potrei lasciarlo correre contro tutti loro, quindi guardare le medie. Qui, volevo esaminare i tempi di risposta per la query stessa oltre al round trip per i pacchetti, quindi ho optato per l'acquisizione dei pacchetti. Più lavoro per configurarlo e testarlo, ma più impegnativo per le vere prestazioni del server esterno. Grazie!
Mike L,

1
Cattiva idea di usare il ping. Non tutti i server rispondono al ping e non vi è alcuna garanzia che il tempo di risposta sarà lo stesso con DNS e con ICMP.
bortzmeyer,

0

dnsevalda dnsdiag funziona come un incantesimo su Windows Linux e Mac. (molto meglio del datenchench obsoleto) download su github

Per usarlo, prima scrivi un file di testo che ogni DNS che vuoi testare contiene una riga con il suo indirizzo IP mylist.txt::

8.8.8.8
192.168.178.1

e poi corri

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

Sebbene ciò non controlli la dimensione della cache dei server, è un approccio molto più semplice e veloce e mi aspetto che sia correlato bene con le prestazioni del mondo reale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.