本記事は、2014年8月にCDNetworks USが発表した記事を翻訳、一部改訂したものです。実験自体は2年前(2014年)に行なわれたものですが、CDNを検討される方にとっては今なおある程度有益であると考え、日本語でも公開いたします。
パブリックDNSがCDNに与える影響(1) ←本記事
パブリックDNSがCDNに与える影響(2)
CDNとDNSの関係
CDNは、負荷分散や高速化のための仕組みをDNSによって実現しています。その仕組みの根幹となるのが、グローバルな負荷分散(ロードバランシング)です。ユーザがウェブ上のコンテンツにアクセスしようとした時、CDNetworksのロードバランサは、ネットワーク的にユーザと最も近いと考えられるエッジサーバ(CDN配信プラットフォーム)のIPアドレスを返答します。このとき、ユーザの場所を知るために用いられるのが、DNSリゾルバから届いたDNSパケットの送信元IPアドレスです。 そのため、もしユーザがDNSリゾルバを独自に設定していて、そのDNSリゾルバがユーザから実際には遠い場所にある場合には、CDNは誤った「最も近いエッジサーバ」を返答してしまうことになります。その場合、CDNを利用してサイト表示を高速化しようとしても、想定した効果を得られないことも起こりえます。
同様に、GoogleなどのパブリックDNSを利用すると、ユーザは自分から遠い場所にあるDNSリゾルバを利用する可能性があります。それはなぜなのでしょうか?
パブリックDNSはCDNと相性が悪い?
GoogleなどのパブリックDNSベンダは、DNSリゾルバのIPにエニーキャストを利用しています。これは、その背後に多くのDNSサーバがクラウド的に存在していることを意味します。そして、これらのDNSサーバはすべての国や地域、ネットワークに存在するわけではありません。
例えば、日本にはGoogle Public DNS(以下、Google DNS)のサーバがありません。日本でGoogle DNSを使うと、そのDNSクエリは近くのGoogle DNS PoPである香港か台湾にルートされます。すると、DNSパケットのソースIPアドレスは香港もしくは台湾となり、この場合一般的なCDNは、実際には日本に最適なエッジサーバが存在していたとしても、ユーザを香港もしくは台湾のエッジサーバへ誘導するでしょう。パブリックDNSとCDNは相性が悪いと考えられる場合もあるようですが、それにはこうした背景があります。
しかし、CDNetworksはこの問題に応えることができます。それは、EDNS-Client-Subnetに対応しているからです。
EDNS-Client-Subnetとは
EDNS-Client-Subnetは、CDNやパブリックなDNSリゾルバがこうした問題を解決するために使われます。いまではGoogle DNSやオープンDNS(彼らはEDNS-Client-Subnetをサポートする2つの大きなプロバイダです)といったパブリックDNSは、もしCDNがEDNS-Client-Subnetをサポートしていれば、クライアントのIPアドレスを(もちろんパブリックIPアドレスです、プライベートIPではありません)CDNのGSLBに送ります。これはロードバランシングに関する追加の情報であり、CDNetworksのGSLBは優れたロードバランシングを行なうためにこの情報を使っています。
パブリックDNSの利用が多い国をCedexisで調べる
CDNetworksはこれまで、継続してCedexis Radarコミュニティに参加してきました。これにより、世界中でCDNetworksのCDNがどのように動いているか詳しくわかります。パブリックDNSの利用状況やこれによるロードバランシングの状況を知るために、Google DNSやOpenDNSからきたリクエストをCedexisの生ログから取得します。Cedexisの生ログには多くの項目がありますが、今回は「クライアントIP」「リゾルバIP」があれば十分です。
生ログを取得する前に、Google DNSやOpenDNSのリゾルバのユニキャストIPがどのIPブロックに属するかを事前に知っておく必要があります。この情報は公表されています。ご存知の通り、クライアントIPからは、エンドユーザが属している国を知ることができます。リゾルバIPからは、彼らが利用しているリゾルバのIPアドレスとそのサーバが属する国を知ることができます。エンドユーザがIP8.8.8.8のリゾルバIPへDNSクエリを送っても、CDNetworksのGSLBはそのDNSクエリの送信元IPが8.8.8.8だとは考えず、実際にCDNetworksのGSLBに対するDNSリクエストが発信されたDNSサーバのユニキャストIPを参照します。このユニキャストIPを確認することにより、それぞれの国でユーザが利用しているパブリックDNSの割合を分析します。
次の表は、リクエスト全体に占めるGoogle DNSやOpenDNSの割合が10%以上であった国のリストです。このデータは2014年8月9日から15日の間に収集され、サンプルボリュームが少ない国は除きました。
Country | Google DNS % | OpenDNS % | Others % | |
---|---|---|---|---|
Indonesia | 62.4% | 6.3% | 31.3% | |
Vietnam | 53.9% | 6.4% | 39.7% | |
Algeria | 53.8% | 3.5% | 42.7% | |
Bangladesh | 35.9% | 2.1% | 62.0% | |
Tunisia | 32.6% | 0.6% | 66.8% | |
Costa Rica | 27.6% | 1.1% | 71.3% | |
Guatemala | 27.0% | 0.8% | 72.1% | |
Malaysia | 23.0% | 3.4% | 73.7% | |
Turkey | 18.7% | 7.0% | 74.3% | |
Iraq | 21.8% | 1.7% | 76.5% | |
Albania | 19.8% | 1.8% | 78.3% | |
Macedonia | 19.9% | 0.2% | 79.9% | |
Italy | 16.4% | 2.6% | 80.9% | |
Brazil | 16.5% | 2.0% | 81.4% | |
Ukraine | 17.7% | 0.8% | 81.6% | |
India | 14.0% | 3.5% | 82.5% | |
Puerto Rico | 14.2% | 3.2% | 82.6% | |
Egypt | 14.2% | 2.6% | 83.2% | |
Czech Republic | 16.4% | 0.4% | 83.3% | |
Hong Kong | 14.4% | 1.3% | 84.2% | |
Philippines | 12.6% | 2.4% | 85.0% | |
Poland | 13.1% | 1.0% | 86.0% | |
Slovakia | 12.0% | 1.0% | 87.0% | |
Argentina | 11.7% | 1.1% | 87.2% | |
Thailand | 12.3% | 0.2% | 87.5% | |
Pakistan | 11.0% | 0.9% | 88.0% | |
Bosnia and Herzegovina | 11.5% | 0.2% | 88.3% | |
Ireland | 9.7% | 1.8% | 88.5% | |
Ecuador | 10.0% | 1.2% | 88.8% | |
Serbia | 11.1% | 0.1% | 88.8% | |
Russian Federation | 10.6% | 0.4% | 89.1% |
ご覧のように、インドネシア、ベトナム、アルジェリアはGoogle DNSとOpenDNSの割合が50%を超えており、大変興味深い状態になっています。こうした国では、ユーザがGoogle DNSやOpenDNSを利用するように自ら設定を変更しているか、ISPが自らDNSリゾルバを立てるのではなくこうしたパブリックなDNSを使うようにしている、もしくは、彼らのDNSリゾルバがGoogle DNSをDNSのフォワーダとして設定していることが想定されます。平均すると、Google DNSからのリクエストは9.6%、OpenDNSからのリクエストは1.2%でした。次の記事では、こうした国でのCDNプラットフォームの動きを見てみたいと思います。