前回の記事では、DNSDiagに含まれるdnspingコマンドを用いて、DNSサーバの応答時間を計測する方法を紹介しました。この際わかったことの一つが、「DNSサーバの応答時間は、クエリに対応するレコードがキャッシュ内に存在するか否か、によって大きく影響を受ける」ということです。

自宅ネットワークに設置したキャッシュDNSサーバの場合、キャッシュヒット時の応答時間が約1msだったのに対し、キャッシュミス時の応答時間は約450msとなり、その差は数百倍にものぼりました。

すべてのクエリに対してキャッシュミスする、ということは実際にはきわめて起こりにくいでしょうから、DNSサーバの現実的な応答時間は1msと450msとの間のおそらく1ms寄りの場所に落ち着くと思われます。これをどれだけ1msに近づけられるか、というところがDNSサーバ運用のチューニングポイントの一つであり、ノウハウになるのでしょうね。

ここで興味を持ったのが、パブリックDNSサーバの場合はどうなんだろう、ということです。プライベートなキャッシュDNSサーバと比較すると、パブリックサーバは、

ということが考えられます。

三つめの点については今回は確認できないのですが、本記事では、主に一つめ、二つめの点を確認するために、パブリックDNSサーバを対象にして、キャッシュヒット時、およびキャッシュミス時の応答時間を計測してみたいと思います。

計測のためのツールとしては、前回の記事で紹介したDNSDiagに含まれるdnsevalコマンドを用いることにします。主なチェックポイントは以下に挙げる三点になります。

計測条件など

計測結果の前に、当方のネットワーク環境や計測条件などについて簡単に記しておきます。

まず、ネットワーク環境は以下のとおりで、インターネットマルチフィード社が提供するtransixサービス(IPoE接続)を利用しています。IPv4については、DS-Liteを用いたIPv4 over IPv6接続になります。

次に、計測対象とするDNSプロバイダおよび計測条件についてまとめます。計測の対象は、主にパブリックDNSサーバですが、比較のためネットワークプロバイダ(IIJmio)が提供するDNSサーバ、および自宅内に設置したプライベートDNSサーバについても計測の対象に含めます。また、名前解決の対象とするドメイン名はblog.c6h12o6.org(このブログをホストしているサーバ)とします。