[第1回]パブリックDNSがCDNに与える影響

パブリックDNSがCDNに与える影響

 

本記事は、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プラットフォームの動きを見てみたいと思います。