外部DNSルックアップのパフォーマンスをベンチマークするにはどうすればよいですか?


14

GoogleのパブリックDNSサーバーをネットワークの外部DNSとして検討しています。現在、ISPのDNSサーバーを使用しています。過去にもOpenDNSを検討していましたが、最終的にはジャンプしないことにしました。

それぞれのサーバーがDNSリクエストを処理できる速さをベンチマークしたいと思います。nslookupには何の助けもありません。

外部から提供されたDNSの往復時間をテストするにはどうすればよいですか?

回答:


5

パケットキャプチャプログラム(DNSのフィルタリング)を使用して、DNSクエリ/応答時間を追跡できます。これは、マシンまたは内部DNSサーバー(ある場合)で実行できます。すべてがほぼ同等であるため、これにより、Google DNSがISPと比較される速さの一般的なアイデアが得られます。


5
WiresharkのDNSディセクタは、要求/応答の追跡を行います。「dns.time」表示フィルターを使用して、応答時間を見つけることができます。
ジェラルドコームズ

40

簡単にできます digし、grep

$ 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

私はこのツールをチェックアウトしました...それは素晴らしいです!
マイクL

2
私はGoogleのnamebenchを実行した後、GRCのベンチマークを試してみました。Googleは、自身の8.8.4.4が他のものより21.1%高速であると述べました。ただし、8.8.4.4を追加したGRCのカスタマイズリストは、GoogleがComcastが提供する現在のDNSよりも低速でわずかに速いことを示しています。最速はすべてレベル3コミュニケーションからでした。GRCのDNSベンチマークは、Googleの現在よりも信頼しています。また、GRCはアセンブリで記述され、単一の184kファイルから実行されます。印象的!
ブライアンボートライト

米国にいない場合は、GRCに注意してください。米国以外でホストされているサーバーの多くはテストされていないようです。
NickG

3

また、GoogleのオープンソースDNSベンチマークユーティリティであるnamebenchも調べました。非常に包括的でした。


リンクの有効期限が切れます:-(
Pol Hallen

(v1.3)にリンクされたnamebenchのバージョンはかなり古いです。GitHubに更新された(v2)リポジトリがあります:github.com/google/namebenchはDNSSEC、CDNベンチマークなどをサポートしています。–
Patrick


2

FirebugプラグインFirefoxおよびIE用のには、「net」タブがあり、すべてのファイル要求の読み込み時間をグラフィカルに表示します。

DNSルックアップを含むアクティビティに分類され、緑色で表示されます。


2

単純なシェルスクリプトqtest.shを使用できます。

%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

ここで172.19.1.1は、ローカルリゾルバであるISPが高速であり、次にISPリゾルバ、OpenDNSが続きます。


2

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

pingを使用して、サーバーとDNSサーバー間でパケットが往復するのにかかる時間を把握できます。原則として、動作するものを変更しないでください。

OpenDNSの欠点は、存在しないドメインがOpenDNSの検索ページを指すAレコードで応答する場合があることです。Googleは現在それをしていませんが、単にDNSリゾルバにそれから得られるものを何も提供していないと考えるのは愚かでしょう。


もし答えを分割できたら、私はそうするでしょう。私はそれが簡単であるためにpingテストが好きでした。それらすべてに対して実行させてから、平均を見ることができます。ここでは、パケットの往復に加えて、クエリ自体の応答時間も調べたいため、パケットキャプチャを選択しました。それを設定してテストするための作業は増えますが、外部サーバーの実際のパフォーマンスをより厳密にします。ありがとう!
マイクL

1
pingを使用するのは悪い考えです。すべてのサーバーがpingに応答するわけではなく、DNSとICMPで応答時間が同じになる保証はありません。
ボルツマイヤー2009

0

dnsevaldnsdiagからは、Windows LinuxおよびMacで魅力のように機能します。(時代遅れのネームベンチよりもはるかに良い)githubでダウンロード

それを使用するには、まず、テストする各DNSにIPアドレスの行が含まれるテキストファイルを記述します mylist.txt

8.8.8.8
192.168.178.1

そして、実行します

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

これはサーバーのキャッシュサイズを検査しませんが、はるかに簡単で高速なアプローチであり、実際のパフォーマンスとよく相関すると予想されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.