前回の記事では、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(このブログをホストしているサーバ)とします。

応答時間計測テストの構成を図にまとめておきます。

パブリックDNSサーバ - 応答時間 - 計測

計測結果

では、計測結果です。

: 本計測結果は、あくまである日時におけるあるクライアントからのクエリに対する応答時間を計測したものであり、おのおののDNSサーバのトータルな性能を示すものではないことにご注意ください。ご参考にとどめおいてくださるようお願いします。

まず、クエリに対応するレコードがDNSサーバのキャッシュにヒットした場合の応答時間を示します。

パブリックDNSサーバ - 応答時間 - キャッシュヒット

次に、キャッシュミスした場合の応答時間を示します。

パブリックDNSサーバ - 応答時間 - キャッシュミス

いかがでしょうか? キャッシュヒット時、キャッシュミス時を通じて、以下の二点を除きパブリックDNSサーバの応答時間はおおむね同等であるという感想です。

さらにくわしく見ていくと、キャッシュヒット時、およびキャッシュミス時について以下のようなことが読み取れると思います。

応答時間を総合的に見た場合、IIJmioのDNSサーバがトップパフォーマーであるといえそうです。(ただし、IIJmioのサーバはパブリックDNSではありませんが。) ネットワークプロバイダとしてIIJmioを使用しているので当たり前の結果なのかもしれませんが、やはりネットワークで定評のあるIIJmioならではの結果であり、さすがだと感じます。(使っててよかったIIJmio ^^)

今回計測した5つのパブリックDNSサーバに話を限ると、VeriSign以外ならいずれを選択しても大きな違いはなさそうです。

以上、パブリックDNSサーバの応答時間計測結果をお知らせしました。

参考文献

  1. DNSDiag, https://dnsdiag.org/
  2. 1.1.1.1, https://1.1.1.1/
  3. Google Public DNS, https://developers.google.com/speed/public-dns/
  4. Set Up OpenDNS on Your Device, https://www.opendns.com/setupguide/
  5. Quad9, https://www.quad9.net/
  6. Verisign Public DNS, https://www.verisign.com/en_US/security-services/public-dns/index.xhtml
  7. DNS Privacy Daemon - Stubby, https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby