DNSに関する記事があまりに説明不足なので、補足文章を書く事にしました。DNSは、単なるオープンDNSサービスでは留まらず滅茶苦茶凄過ぎていて、ある意味インターネット全体のありかたを変えてしまう可能性さえあると個人的には思っています。思っているかを含めて、色々書いてみました。以下の文章は多くが公式発表からの引用ではなく、その他の外部観測情報を元にした推測や個人的な妄想が入り交じっているので、内容に関しては各自で考えて判断をお願いします。DNS高速化に関しての考えを最初に書きます。DNSを使うとウェブ表示が早くなる人も居れば、逆に遅くなる人も居る」というのが私の考えです。DNSを使うと早くなると推測しています。DNSを使うと「遅くなる」と思われる方々です。日本国内の大手ISPによって運営されているDNSキャッシュサーバの質は非常に高いと思われます。そのため「日本国内で多くの人が問い合わせるドメイン名(FQDN)に関しては、日本国内のDNSキャッシュサーバの方が早いことが多い」と個人的に推測しています。DNSが有利で、何故それが可能なのかに関しての私の推測(or妄想)を次に述べます。DNSを知るには、現状のGoogleのバックボーンネットワークの「強さ」を知る必要があると思われます。DNSが今までのオープンDNSサービスと比べて圧倒的なのは、既存のGoogleバックボーンネットワークの存在が非常に大きいのではないでしょうか。現在、Googleは「インターネットのどこにでもいる」という形になっていると推測しています。この「どこにでもいる」というのは、「様々なネットワークと隣接した状態にある」という意味です。インターネットの語源は「Inter-net」であり、ネットワークが相互接続されたネットワークです。System)という単位に別れて相互接続しています。Protocol)というプロトコルで相互接続されており、Googleも独自のAS番号を取得して様々なASと接続しています(参考:BGPを解説してみた)。以後、ASという単語を使って説明しますが、ASとはISPやGoogleなどの組織が運営するネットワークだと思って下さい(MicrosoftやAppleもASを持っています)。インターネットでは、遠くのネットワーク(AS)に行くために複数のネットワーク(AS)にパケットをバケツリレー的に転送してもらうことで、遠く離れた機器同士が通信できるように設計されています。そのため、AS的に「隣に居ない状態」であっても、相互に通信ができる仕組みになっています。経由するASが増えるということは、経由するルータなどの機器や光ファイバケーブルを多く経由することを意味します。通信する距離や、経由する機器が増えれば増えるほど、通信速度は低下します。それを避けるために、AS同士は「ピアリング」という形でネットワークを接続します。ピアリングとは「AS的に隣になりましょう」ということです。ピアリングを行って「隣同士」になれば、複数のASを経由するよりも通信速度が早くなります(その他政治的な側面も強いと思われますが、そこは今回は割愛)。日本の大手ISPのほとんどはGoogleとピアリングしています。日本の大手ISPのほとんどは「Googleと直接隣同士」なのだろうと思います。日本に限らず、ヨーロッパやその他地域においてもGoogleは「世界中に居る」状態だと思われます。多少語弊がある図ですが、こんな感じです。自分が居るISPがGoogleのお隣さんになっているかどうかを確認するのは非常に簡単です。www.google.co.jpにtraceroute(windowsだとtracertコマンド)してみて下さい。その結果出て来るIPアドレスが所属しているAS番号を見て行くと、隣かどうかがわかります。IPアドレスからAS番号を確認するにはwww.radb.netなどをご利用下さい。DNSの8.8.8.8がAS的に「隣」であるかどうかをtracerouteの結果から見てみます。ms上記結果を見ると、3番目の結果である64.125.27.150までは逆引き結果が「above.net」になっています。一方で、3番目の次の結果である4番目のアドレス72.14.217.93は、Googleを示すAS15169です。この結果から、3番目のルータと4番目のルータがAbovenetとGoogleの境界であることがわかります。1,2番目はAbovenetで、5〜9番目はGoogleのASです。このような感じで、自分のISPからtracerouteした結果を見ると「Googleが隣にいるかどうか」がわかります。世界で非常に多くのASとピアリングしている組織としては、Tier1と呼ばれる世界的規模のキャリアか、AkamaiかGoogleが代表的だと思われます。Googleは今や世界のトラフィックの約10%を生成し(YouTube含む)、バックボーンとしてはいくつかのTier1キャリアよりも強力なものを保持しているという、インターネットインフラ界の「巨人」だと推測されます。Networksプレゼンでは、世界第3位とされていました。3位は、AT&TやNTTより上です。参考:NANOG47資料解説→「インターネットの形を変えて行くGoogle,Facebook,Akamai...」)なお、余談ではありますが、これはバックボーンネットワークの話であり、アクセス回線の話ではありません。Neutrality)の議論が絡んで来ると思いますが、その話はここでは割愛します。DNSの話題の中で「anycast(エニーキャスト)」という単語が度々出ており「anycastって何?」と思った方々も多いと思います。次は、anycastとは何かに関して説明します。anycastとは、その名の通り「どれでもいいから近くに行く」というものです。具体的な手法としては「同じIPアドレスを持った機器が世界中に複数ある」という状態が造り出されています。anycastは、技術そのものとしては結構前からある技術です。長野オリンピックの時にもWebサーバの負荷分散を行うためにanycast技術が利用されていました。DNSはanycastによって運営されています(参考:RFC3258)。嘘が混じっていると思いますが、ざっと図にするとこんな感じです。BGPを通じて相手を選んで「8.8.8.0/24はココだよ!」と言うのですが、その言い方(言う相手の選び方)や、ネットワーク上での機器の配置で工夫をしているのだと予想しています。このanycastが実現できることと「Googleがそこら中に居る」というのは、恐らく無関係ではありません。DNSの速度を知るには、そもそもDNSとはどういう仕組みで動いているのかも知る必要があります。次の例では、ユーザが「www.example.com」というWebサイトを見ようとしたときの動作です。ユーザのノートPCには、DNSクライアントが入っています。そのDNSクライアントは「www.example.com」という名前に対応するIPアドレスが、自分のキャッシュの中に入っているかどうかを調べます。ノートPCの中のDNSクライアントが過去に「www.example.com」の名前解決をした事が無く(過去に名前解決した結果のキャッシュがタイムアウトしている場合もあり)、キャッシュに「www.example.com」の名前解決済みIPアドレスが無い場合、DNSクライアントはDNSキャッシュサーバに「www.example.com」の名前解決を依頼します。DNSキャッシュサーバは、「www.example.com」の名前解決結果を、ノートPCの中のDNSクライアントに伝えます。上記例はユーザ視点でのDNS動作です。実際にはもう少し複雑です。次は、DNSキャッシュサーバが「www.example.com」の名前解決結果キャッシュを持ってない場合を考えます。最初にDNSクライアントがDNSキャッシュサーバに問い合わせを行うのは同じです。DNSキャッシュサーバは、www.example.comに対応するキャッシュを保持していないので、外部のDNSに問い合わせを行ってwww.example.comの名前解決を試みます。DNSキャッシュサーバは、まず「www.example.comを教えて!」とルートDNSに問い合わせます(2)。すると、ルートDNSは「.comに聞いて!」と応えます(3)。次に、.comのDNSに「www.example.comを教えて!」と問い合わせます(4)。すると.comのDNSは「example.comに聞いて!」と応えます(5)。今度はexample.comのDNSに「www.example.comを教えて!」と問い合わせます(6)。するとexample.comのDNSは、FQDNに対応するIPアドレスを返してくれます(7)。www.example.comのIPアドレスを得たDNSキャッシュサーバは、DNSクライアントに結果を通知します(8)。このようにDNSキャッシュサーバにキャッシュが無いと、裏で様々な問い合わせが発生して応答に時間がかかります。最終的に得られた結果をDNSキャッシュサーバは、ノートPCのDNSクライアントに伝えます。実際には、通常運用されているDNSキャッシュサーバは「.com」ぐらい一般的なエントリのキャッシュは保持していないということが、ほとんどありません。旅行関連の「.travel」や、博物館の「.museum」など、ほとんど使われていないような名前だとルートDNSからの名前解決になるのかも知れません。いう感じで、DNSキャッシュサーバにキャッシュが無い場合には、DNSクライアントが知らないところで複数の問い合わせが行われています。このように複数の問い合わせが必要となるため、速度に関して考える場合にはDNSキャッシュがヒットするかしないかは非常に大きな問題です。私の環境ではISPのキャッシュサーバでwww.hatena.ne.jpを問い合わせた結果は9msecで返って来ます。一方で、www.ietf.orgを問い合わせると311msecかかりました。www.ietf.orgの問い合わせ2回目の時には、先ほどのキャッシュがDNSキャッシュサーバに入っているので9msecで返ってきました。DNSの場合、www.ietf.orgも、www.hatena.ne.jpも、60msec弱ぐらいで返答が返ってきます。今のところ、マイナーなFQDNか、そもそも存在しない事がわかっているFQDN以外では大抵同じぐらいの速度になっています。DNSキャッシュサーバという違いがありそうです。DNSよりも容量が少ないからといって使い物にならないわけではありません。今まで特に不自由はせずに名前解決が出来ていたと思います。ISPが用意しているDNSキャッシュサーバのキャッシュには、「そのDNSキャッシュサーバを利用している人々の残したキャッシュ」が残っています。いうことは、「そのDNSキャッシュサーバを使っている人々がよく見るWebサイトの名前解決に関しては、ISPのDNSキャッシュサーバの方が早い」という場合が多そうです。海外のブログやニュースを多く見る人が、そのDNSキャッシュサーバに少ない場合、それらのFQDNの名前解決用のキャッシュがISPのDNSキャッシュサーバに残っていない可能性が高くなります。DNSを使った方が、それらの名前解決に関しては早くなるという場合もありそうです。DNSは、ローカルISPが提供するDNSキャッシュサーバよりもキャッシュミスが少ないという点がウリなのだろうと推測しています。DNSの効果がわからないというのが測定の難しい所です。DNSに対して名前解決を一度Queryしてしまうと、そのキャッシュが出来上がってしまうので、1度目の測定結果と2度目の測定結果が全く異なる物になる可能性が高かったり、ISP側のDNSキャッシュサーバで自分と同じ名前解決を行いたい人が居るか居ないかで存在するキャッシュの内容が異なるという点も測定を困難にしていると思われます。DNSキャッシュサーバよりも早いか遅いか」という結論を出すための測定方法は思いつきません。いえ、RTTも重要な要素の一つではあります。DNSは太平洋を超えない国外のどこかにありそうだと噂されていますが、そのうち日本国内にもGoogleデータセンターが構築される可能性があります。昨年Googleが日米間の海底ケーブル建設に乗り出したニュースは記憶に新しいと思います。DNSの速度は今より上昇するのかも知れません。DNSとCDNGoogleが世界中のユーザに快適で高速なWeb体験を提供するために、恐らくanycastが既に利用され続けています。Network)も構築されているはずです。Webサイト構築用のCDN技術を、DNSキャッシュサーバに活かしたものです。DNSの名前解決結果をPrefetchするという説明が書いてありますが、これはWebをクロールするロボットのようなものだと思います。WebよりもDNSの方が楽だろうと思える点もいくつかあります。Webよりもデータのエントリ数が劇的に少ないだろうと推測できます。WebのURLは、ある特定のFQDN(ホスト名)の中に多数のファイル(もしくはパス)が存在していますが、DNSの場合はFQDNだけです(MX,NS,その他などもあるのですが、とりあえずそこら辺は割愛)。エントリが少ないということは、必要な記憶用機器もWebよりも少なくて済みそうです。Live,有効期限)」があらかじめ明記されている点です。Webであれば「Webサーバ上のコンテンツがいつ更新されているのか予測がつかない」ので、Google側で勝手にコンテンツを代理で出す事は出来ません(Webコンテンツの場合は著作権的問題もありますが、ここではそれは範疇外)。各種DNSの回答結果にはTTLが付属しています。「この名前解決結果は○○秒後までは再度問い合わせなくてもキャッシュで代わりに回答してもいいですよ!」というのがプロトコル内に含まれているので、TTLで規定された時間内であればDNSに問い合わせせずにキャッシュを見るだけで勝手に回答しても良いことになっています。DNSのPrefetchというのは、このTTLが切れる前に新しいQueryを自分で出してしまってDNSキャッシュを更新してしまうというものです。DNSは非常に多くの名前をあらかじめ解決してキャッシュとして大量に保存してあるので、キャッシュミスが発生しにくくなるのだろうと思います。全世界の全てのDNSエントリ(Webページがindexされているもの)の最新情報を常にprefetch済みにしておけば、キャッシュミスが発生するISPのローカルDNSキャッシュサーバよりも早くなるというものなのだろうと思います。DNSが、全世界のあらゆるエントリを常に最新に保ち続けているかどうかはわかりませんが、あらゆるURLのキャッシュを保持し続けられる組織であれば、世界中のDNSによる名前解決結果は保持できるのかも知れません。DNSに問い合わせた事もないエントリに関してもDNSキャッシュを最新に保ち続ける事ができそうです。個人的には爆発的に普及しそうだと考えています。DNSで爆速ブラウジングのマル秘テクニック」などの特集が組まれたりするだろうと思うので、まずは出だしとしては、それで普及しそうです。技術には興味がないユーザが、あまり考えずに一度設定を行って、その後は8.8.8.8が維持され続けるというのもありそうです。日本国内では最速では無いにしても、安定してキャッシュミスしないのであれば、全体的には高速化したと感じさせやすいのと、8.8.8.8という覚えやすい数値とISPによる覚えにくい数値で、どちらが選ばれるかと言えば、恐らく前者だろうと思います。ISP側からの書類が発見できなくて、DNSキャッシュサーバのIPアドレスがわからなければ何も考えずに8.8.8.8と入力するというのも増えそうです。市販されている家庭用のSOHOルータ(ブロードバンドルータ)のデフォルト設定に組み込まれたりすると、さらに爆発的に普及すると思われます。DNSを使っているかどうかを認識すらせずに使う状態が出来上がります。今まで、どこか特定の組織がDNSキャッシュサーバを広く提供してユーザを集めるという事を行ってきませんでした。いうよりも、できませんでした。OpenDNSなどがありましたが、地理的に離れると速度が低下するなどの課題があり、さほど普及していたとは思えません。DNSは、膨大なDNSキャッシュを管理できて、anycastも既存インフラで運用可能なGoogleが行うからこそ、凄過ぎるのだろうと思います。DNSの速度問題ですが、返答速度だけが「速度」ではありません。返答された結果によって、その後、実際のコンテンツを取得するための通信速度が変わる場合もあります。DNSを利用している場合、DNSでの名前解決結果が現時点では最適では無い回答を返す場合もありそうです。私の家からAkamaiのCDNサービスを購入している「www.asahi.com」の名前解決を行うと、異なる結果が返ってきます。DNSを用いた結果だと14ホップでRTTが90msecになりました。DNSでの14ホップですが、AS的には3ホップ目になっていました。DNS側の結果を見るとtracerouteでの途中経路の逆引きにnrt→hkgという部分があるので成田→香港と行ってそうです。RTTから見ても香港側に行ってそうな気がします。DNSが他のDNSコンテンツサーバに問い合わせを行う時のIPアドレスは8.8.8.8では無いようです。DNSからの問い合わせが来るのでわかります。Queryを送信してくるIPアドレス送信元は地域によって異なっているのかも知れません。DNSのデータセンターがアジア側の「海外」にあるのであれば、ある意味、Akamaiシステムとしてはあるべき姿なのかも知れません。DNSの返すIPアドレスが、AkamaiなどのDNSを活用したCDNとの相性によって、日本国内においては最適ではない可能性もありそうです。「www.symantec.com」も試してみましたが、結果は同じでした。他はあまり深く試していないので、全てにおいてこのような結果になるかどうかはわかりません。DNSはインターネットの概念そのものを変えかねないと思いました。恐ろしいものの片鱗を味わったぜ...」というアスキーアートを貼付けて違和感がないだろうというぐらいです。DNSは普及して行くと個人的に予想しています。DNSユーザが世界の数十パーセントに達したとき、何が起きるのか予想ができません。今や、インターネットとはIPアドレスではなく「名前」です。その「名前」に関しての制御権は、今まで世界各地のDNS権威サーバによって分散管理されていました。DNSの分散管理の仕組みは、広大なインターネットをスケーラブルに運用する代名詞のようなものでさえありました。政府などとは独立して名前等を管理するICANNも「運用」や「政策」という意味でのインターネットの分散管理の象徴でした(アメリカ政府とICANNの関係に関しては割愛)。それは、非常に大きなシェアを持った単一の組織が居ないという前提の元に今までは成り立っていたのだと、個人的に思います。「オレはこうやっちゃうもんねー。うちのユーザにはこの機能を提供するよ」と言われると、ある程度はそれに従わざるを得ない状況が生まれそうです。DNSを使っている人だけが解決出来る名前」というサービスを開始したとき、DNSの名前管理のありかたが根底から変わる可能性すらあります。DNSのユーザが莫大な増加をするということは、ある意味Googleがルートネームサーバを含めた全ての名前解決に影響を与えられることに近いのではないかと思います。技術的には、ルートネームサーバは誰でも運用可能です。Root」という「勝手にルートサーバ」な方々が昔から居て、話題にはなっていましたが、実はさほど大きな問題へは発展していません。Rootのユーザが少ないからです。この「ユーザを集める」というのがインターネットの大きな障壁だと思います。インターネットは、「技術的には世界を変えてしまうような施策を誰でも可能な部分がいくつかあるけど、作ったとしてもユーザが来てくれないから今の形が保たれている」という側面があるのではないでしょうか。Domain)ですが、2003年に.netや.comを運営するVeriSignが「存在しないドメイン名を問い合わせした時の挙動」として、自分のサーバアドレスを返すという事件がありました。.netや.comなどのTLDを管理しているVeriSignだからこそ出来たことです。このとき、様々な反発が発生し、VeriSignはリダイレクトをやめました。DNSユーザが非常に多くなり、Googleが何か「新しいこと」をやろうとすると、どうようの騒動に発展する可能性はありそうです。Deploymentネームサーバはインターネットの中で通信に対して柔軟性を提供している面もあります。次世代インターネット系の研究の中には「重要なのはURLじゃなくてコンテンツだよね!だから"機器の場所"に紐づいたFQDNを含むURLって変だよね!コンテンツIDでデータだけ流通するのがいいよ!」という系統の提案もあります。見ると最初のデプロイとしてはDNSを活用して独自の名前管理をするという実装方法だったりします。何が言いたいかというと、「ある程度自由に変更を反映できる世界的なDNSを持っていると、インターネットアーキテクチャそのものにメスを入れたくなる誘惑が強くなるのではないか?」と思うということです。世界の半分のユーザを抱えるDNSキャッシュサーバが生まれたとき、「インターネットとは何か?」という問いに対する回答は今とは変わっているのかも知れないとさえ思います。気にし過ぎなのかも知れませんが。NYTimes記事)、ランキングによっては世界第3位のバックボーンネットワークを持っている、インターネットインフラ界の巨人が「世界中の皆様!私がDNSキャッシュサーバを皆様のために!」という世界が来たんですね。本当に凄いことだと思います。NSをやっていると、結果が大文字になったり小文字になったりすることがあります。急にTTLの値が増える事があります。これは、きっと、8.8.8.8というアドレスの向こうに複数のDNSが存在していて、ロードバランシングをしているものと思われます。228あと、一つ気になったのが、実際にDNSキャッシュをどこまで共有できているのかも疑問な部分もあります。マイナーなFQDNを問い合わせて、TTLの範囲内で数十分経過しないうちに再度digを連発してみると、何度かはキャッシュが無いような結果になります。良く考えると、そもそもTTLにバリエーションがあるというのは、キャッシュを全体で共有出来ていない事を示している気がします。ここら辺は、様々な方々が色々試して解析が進んで行くのだろうと思いました。無断転載など、私的利用の範囲を逸脱した利用は禁止します.。