CDNがパブリックDNSを使っても最寄りサーバーを判断できる理由

CDN(Content Delivery Network)サービスでは、ユーザーからのアクセスをどうやって最寄りのサーバーに振り分けているのだろうか。実は、DNSサーバーの名前解決を利用している。DNSサーバーは、問い合わせがあったドメイン名に対して、WebサーバーのIPアドレスを返す。この仕組みを使っているのだ。


 例えば、ユーザーがWebブラウザーでドメイン名を含むURLを指定して、CDNを利用したWebサーバーにアクセスしようとしたとする。パソコンのTCP/IP処理プログラム(スタック)によって、名前解決を要求するパケットが送信され、契約するインターネット接続事業者(ISP)のDNSサーバーに要求パケットが届く。


 ISPDNSサーバーは通常、反復的問い合わせを行い、指定したURLのIPアドレスを回答できる権威DNSサーバーに名前解決の要求パケットを送る。権威DNSサーバーでは、要求パケットの送信元IPアドレス、つまりISPDNSサーバーのIPアドレスを参照して最寄りの配信サーバーを判断し、そのIPアドレスを応答することになっている。


f:id:nonbei:20180925093432j:plain
DNSサーバーを使って最寄りのサーバーを割り当てる
Webサーバーの権威DNSサーバーが、問い合わせしてきた送信元のIPアドレスやASなどから割り当て先を指定するテーブル情報を基に、最寄りの配信サーバーのIPアドレスを応答する。[画像のクリックで拡大表示]



パブリックDNS拡張機能で対応

 このDNSを使った最寄りの配信サーバーへの誘導は、ISPDNSサーバーを使わないケースでは正しく動作しない。例えば、パブリックDNSサービスの一つである「Google Public DNS」(IPアドレスは8.8.8.8)を使うと、DNSサーバーは台湾あるいは香港にあるため、海外にある配信サーバーを指定されてしまう恐れがある。そこでアカマイやクラウドフレア、Amazon CloudFrontといった多くのCDNサービスでは、「EDNS-Client-Subnet」(ECS)というDNS拡張機能を使って対応している。


 ECSに対応したパブリックDNSに要求パケットが届くと、元の要求パケットに記述された送信元IPアドレスの一部を埋め込んで別のDNSサーバーに要求パケットを送る。ECSに対応したCDNサービスでは、埋め込まれたIPアドレスの一部を使って、最適な「最寄りの配信サーバー」を指定する。


サービスごとに実装は異なる
 ここまでCDNサービスの主な仕組みを解説したが、その実装方法はCDNサービス事業者によって大きく異なる。


 世界最大の配信サーバーを抱えるアカマイは、日本国内だけでも145のネットワークに1万2000台のサーバーを設置している。これらのサーバーは、ISPのネットワーク内に設置していることが多く、よりユーザーに近い位置に配信サーバーが設置されている。


 一方、アカマイ以外のCDNサービスのほとんどは、国内で東京と大阪といった大都市に配信サーバーをまとめて設置する。アカマイより全体の配信サーバーの台数は少ないが、大都市の配信サーバーの設置台数が多い。多くのユーザーで配信サーバーを効率的に使えるようになっている。


出典:日経NETWORK 2017年4月号 pp.54-55
記事は執筆時の情報に基づいており、現在では異なる場合があります。


ソ-ス:・CDNがパブリックDNSを使っても最寄りサーバーを判断できる理由 | 日経 xTECH(クロステック)