Preliminary Study on DNS Load Balancing and Efficiency of Cache
by user
Comments
Transcript
Preliminary Study on DNS Load Balancing and Efficiency of Cache
DNS の負荷分散とキャッシュの有効性に関する予備的 検討 Preliminary Study on DNS Load Balancing and Efficiency of Cache 服部 敦 1 1 東京電機大学 理工学研究科 藤本 衡 2 2 東京電機大学 理工学部 概要 大規模組織での DNS キャッシュサーバでは、利用者からの DNS クエリをロードバランサ によって複数のサーバに分配する運用がしばしば見られる。しかし、DNS におけるキャッ シュヒット率は単位時間あたりのクエリ到着数に比例するため、ロードバランシングによっ てヒット率が(ロードバランシングを行わない場合に比べて)低下するおそれがある。本 研究では、実際に得られたクエリの到着時刻情報を用い、いくつかのロードバランシング ポリシーにおけるヒット率の比較を行う。 1 はじめに DNS プリフェッチ [3] も実装されているが、 処理が重くなるなどの理由により、必ずし も UX 向上には繋がっていないとも言われ ている。キャッシュの効果については、DNS キャッシュヒット率を計測することで生存 時間(TTL)を適切に調整する研究 [4, 5] が行われている。 また、キャッシュサーバの処理遅延を避 けるため、ネットワーク内にキャッシュサー バを複数配置し、ロードバランサによって 負荷分散を行う構成もしばしば見られる。 しかし、キャッシュサーバが複数になるこ とで逆にキャッシュ効率が低下する懸念も ある。ロードバランシングに関する数理的 な評価の試みもある [6] が、処理待ち時間 の解析が主でありキャッシュヒット率には 注目していない。また、リクエストの到着 間隔を指数分布にするなど、必ずしも実際 のシステムを十分に反映できているとは言 Web ページの表示に要する時間は、ユー ザエクスペリエンス(UX)を高め顧客を 維持するために重要な指標となっている。 2000 年以前の ISDN/ADSL 時代に 8 秒と されていた [1] 目安は、ブロードバンドの 普及に伴うユーザの「慣れ」とともに短く なり、2009 年には 47% の消費者が 2 秒以 内にページ表示が行われることを望んでい るという調査結果 [2] が示された。このよう にコンテンツ表示に費やすことが可能な時 間が短くなるにつれ、その前処理として必 要なドメイン名の解決に要する時間は(相 対的に)大きくなる。 DNS を用いたドメイン名解決では、従 来よりリゾルバおよびキャッシュサーバに おけるキャッシュを用いた高速化が図られ ている。近年では、クライアント側による 1 メイン名に関する要求を集約してコンテン ツサーバの負荷を軽減するとともに、キャッ シュの有効性を高めリゾルバの応答時間を 短縮することが可能となる。 えない。 そこで、本研究ではキャッシュサーバに 到着するドメイン名解決リクエストを計測 し、到着時間間隔およびドメイン名解決に 要する時間の経験分布を導く。そして、ロー ドバランサを用いないキャッシュサーバと、 ラウンドロビンもしくはランダム振り分け による負荷分散を用いたキャッシュサーバ のシミュレーションを行い、キャッシュヒッ ト率を比較する。 2 2.1 複数キャッシュサーバによる構成 多くのホストを収容する大規模ネットワー クにおいては、キャッシュサーバへの負荷 も増大するため、負荷分散を検討する必要 がある。また、キャッシュサーバが故障等 で停止する場合を考慮し、予備機を用意す ることも重要である。 一般的なリゾルバ実装では複数(2 ない し 3)のキャッシュサーバを設定できる。障 害対応が主目的でありキャッシュサーバの 数が少ない場合は、このようなリゾルバ側 での対応も有効である。しかし、リゾルバ は指定した順にドメイン名解決要求を送る ので、この方法は負荷分散という用途には 適していない。 したがって、負荷分散を目的としたより 大規模なキャッシュサーバでは、キャッシュ サーバの前段にロードバランサを配置し、 リゾルバはロードバランサに要求を送ると いう構成をとる。ロードバランサからキャッ シュサーバへの要求転送では、処理速度を 重視して単純なポリシーを採用する場合も あり、一方で各サーバの負荷状況や要求内 容に応じた複雑なポリシーを採用する場合 もある。 本研究では、n 台のキャッシュサーバ群へ の要求転送に際してロードバランサが以下 の 2 つのポリシーを用いる場合を想定し、 単一キャッシュサーバ構成との間でキャッ シュヒット率を比較する。 DNS について DNS(Domain Name System)[7] は、ド メイン名と IP アドレスの対応付けを管理 するシステムである。DNS の構成を図 1 に 示す。 図 1: 一般的な DNS の構成 DNS によるドメイン名解決を要求するク ライアントはリゾルバ(スタブリゾルバ) と呼ばれる。リゾルバは OS の機能、ある いはライブラリやソフトウェアとして用意 されており、OS 上で動作するアプリケー ションソフトウェアの要求に応じてドメイ ン名解決を行う。コンテンツサーバはリゾ ルバの要求に対し、自らが管理する情報を 返信する。 一般的なネットワークにおいては、ネッ トワーク上の各リゾルバから送られる解決 要求を取りまとめ、外部のコンテンツサー バに転送するキャッシュサーバ(フルサービ スリゾルバ)を置く。これにより、同一ド 1. ラウンドロビンポリシー: 到着した名 前解決要求を順にサーバ 1、サーバ 2、 . . .、サーバ n へと送り、(n + 1) 番目 の要求は再びサーバ 1 へと送る。 2 • resolver : 名前解決、再帰問い合わせ の処理 2. ランダムポリシー:要求ごとに区間 [1, n] 上の一様整数乱数 U を生成し、 サーバ U へ要求を転送する。 図 3 は実際に BIND が出力したログの例 である。ドメイン名 www.google.com の A レコードを要求する問い合わせであり、上 位への反復問い合わせがないままリゾルバ に結果が送信されているため、キャッシュ ヒットした問い合わせであることがわかる。 データ計測 3 本研究では、東京電機大学の DNS キャッ シュサーバ群におけるドメイン名解決要求 を観測し、以降の解析に用いた。 観測対象のキャッシュサーバ群は、ロー ドバランサによる負荷分散を行っている。 ネットワーク内のリゾルバはロードバラン サに対してアクセス要求を送信し、ロード バランサはラウンドロビンポリシーに基づ いて要求を各キャッシュサーバに転送して いる。図 2 にキャッシュサーバ群の構成概 要を示す。 client: debug 3: client 133.20.1.1#14866: UDP request client: debug 5: client 127.0.0.1#14866: using view ’_default’ client: debug 3: client 127.0.0.1#14866: query queries: info: client 127.0.0.1#14866: query: www.google.com IN A + client: debug 10: client 127.0.0.1#14866: ns_client_attach: ref = 1 client: debug 3: client 127.0.0.1#14866: send client 127.0.0.1#14866: sendto client 127.0.0.1#14866: senddone client 127.0.0.1#14866: next client 127.0.0.1#14866: ns_client_detach: ref = 0 client 127.0.0.1#14866: endrequest 図 3: BIND ログの例 ログの保存や転送などがキャッシュサー バ本来の処理に影響を与えないよう、別途 ログ収集用のホストを用意し syslogd を介 してログの受信を行った。収集されたログ すべてを用いることで、ロードバランサに 到着しているすべての名前解決要求を観測 できたことになる。 このように収集されたログから、以下の 情報を取得した。 図 2: 観測対象サーバ群の構成 3.1 計測方法 • 解決対象ドメイン名 観測対象の DNS キャッシュサーバでは、 DNS のサーバソフトウェア BIND が使用 されているため、BIND の logging 機能を 使用して DNS 名前解決のログを収集した。 logging 機能では、BIND の処理内容に応じ て出力を取捨選択できるため、本研究では 以下のカテゴリについてデバッグレベル 10 で出力するように設定した。 • 解決要求の受信時刻 • 解決要求に対する応答の送信時刻 • キャッシュヒットの有無 3.2 要求の到着間隔と処理時間 前節で得られた計測データから、特定の ドメイン名に関する名前解決要求の到着間 隔分布、および応答時間分布の相対頻度が 得られる。ただし、キャッシュミスした場 • client : クライアントの要求処理 • queries : BIND が受信した問い合わ せ 3 prob. 合には上位への反復問い合わせを必要とす るため 0.1 秒オーダーでの応答時間を要す るのに対して、キャッシュヒットした場合 は十分に無視できるほど小さい応答時間と なる。そこで、以下ではキャッシュヒット した場合の応答時間は無視している。 図 4 は、ドメイン名 www.google.com に 対する名前解決要求の到着間隔を累積分布 として表したグラフである。 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0.01 0.1 1 prob. response time[s] 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 図 5: キャッシュミスした要求の応答時間累 積分布 キャッシュサーバ i (i = 1, 2, . . . , n) に 要求を転送する。 1 10 100 1000 3. キャッシュサーバ i では、以下の基準 でキャッシュヒットかミスかを判定す る。 10000 interarrival time[s] (a) キャッシュが存在しない場合、キ ャッシュミスとする。このとき、 同一ドメインの要求処理中でな ければ、応答時間分布に基づく 乱数を発生させ、要求処理に入 る。要求処理中に到着する同一 ドメインの要求は、同じくキャッ シュミスとする。 図 4: 要求の到着間隔累積分布 図 5 は、ドメイン名 www.google.com に 対する名前解決要求のうちキャッシュミス したものに限定して、応答終了までの時間 を累積分布として表したグラフである。計 測データに限れば、すべての要求は 1 秒以 内に応答しており、キャッシュミスした要 求の処理中に同じドメイン名に対する要求 が来ることはほぼ無いと考えてよい。 4 (b) キャッシュが存在する場合は、キ ャッシュヒットとする。 4. キャッシュサーバ i は要求処理の完了 とともに、キャッシュが存在する状態 へと移行し、TTL のカウントダウン を開始する。TTL が 0 になった場合、 キャッシュを消去する。 シミュレーションによる解析 3.2 節で得られた到着間隔分布および応 答時間分布に基づき、以下のようなシミュ レーションを行う。 以下では、名前解決要求を 10000 個発生 させてキャッシュミス率を求めるシミュレー ションを 1 試行とし、10000 試行の結果か ら平均および 95%信頼区間を求めた。 1. 名前解決要求が、到着間隔分布に従 うランダムな間隔でロードバランサ に到着する。 2. ロードバランサはラウンドロビン、も しくはランダムポリシーにしたがって 4 4.1 到着間隔の影響について 4.2 TTL 値の影響について 次に、到着間隔分布を実測値にしたがう ものに固定し、キャッシュ生存時間(TTL) を変化させた時のキャッシュミス率の変動 を求めた。 図 7 は 4.1 節と同じ www.google.com の 要求到着間隔と応答時間の分布を用い、TTL を 30 から 30000(秒)まで変化させた結果 である。TTL 値が大きくなればキャッシュ ミス率は無視できるほど小さくなるが、一 方で TTL が 30 の時には特にラウンドロビ ンポリシーによる負荷分散でキャッシュミ ス率が極端に悪化していることがわかる。 Twitter などいくつかの主要サービスでは 60 秒程度の TTL を設定していることから、 キャッシュ性能の低下に対しては何らかの 対策を検討する必要があると考えられる。 まず、n = 5 のキャッシュサーバ群におい て、ラウンドロビンポリシーとランダムポ リシーでのキャッシュミス率を求め、n = 1 (単一キャッシュサーバ)の場合と比較した。 到着間隔分布の値をスケーリングし、より 短い到着間隔の場合にキャッシュミス率が どのように変化するかを図 6 に示す。 図 6 はドメイン名 www.google.com に関 する分布を用い、TTL が 300 秒と仮定し たシミュレーションである。グラフは対数 軸で表現されており、実測値そのままのタ イムスケール(横軸が 1)においては複数 キャッシュサーバとすることでキャッシュミ ス率が 4 倍にもなる可能性を示している。 また、ラウンドロビンポリシーに比べると ランダムポリシーの方が若干キャッシュミ ス率が低下することがわかる。 また、タイムスケールを短くする(すな わち単位時間あたりの到着頻度を高める) ことにより、この差は減少していくことが わかる。10−3 ではかなり差が小さくなり、 10−4 では信頼区間が重なるため優劣が分か らない結果となった。計測対象のキャッシュ サーバが受け入れるリゾルバの概数は 1 万 台のオーダーであると推測されるため、大 手の ISP であれば複数キャッシュサーバを 用いることによるキャッシュミス率の差は 無視できるレベルになると期待される。 図 7: TTL の変化に伴うキャッシュミス率 の変動 5 まとめ 本研究では、負荷分散を目的として複数 の DNS キャッシュサーバとロードバラン サによる構成をとった場合に、キャッシュ ヒット率に与える影響をシミュレーション によって比較した。 その結果、数万加入者規模のサイトにお いては、キャッシュサーバを複数台にするこ とでキャッシュヒット率が低下することが 図 6: 到着間隔の時間スケール変化に伴う キャッシュミス率の変動 5 確認できた。その一方で、数百万台以上の 規模であれば、キャッシュヒット率の差は無 視できるレベルであることが示唆された。 キャッシュヒット率低下を避ける対策と しては、たとえば解決要求の対象となるド メイン名からハッシュ値を生成し、ハッシュ 値に基づいて要求を転送する方法が考えら れる。ただし、ロードバランサでこうした パケット内の情報に基づくポリシーを実装 するには処理時間など様々な課題があり、 今後の検討課題と言える。 3.2 節で示した要求の到着間隔分布およ び応答時間分布は、ドメイン名によって明 らかに異なっており、また計測対象となる ネットワークによっても異なるものと推測 される。今後はそれらを網羅的に表現でき、 十分な精度でキャッシュヒット率の近似値 を与える分布形の提案と、それを用いたモ デル構築を行うことが求められる。 [4] Jung J., Sit E., and Balakrishnan H., DNS Performance and the Effectiveness of Caching, IEEE/ACM Transactions on Networking, 10(5), pp.589–603, 2002. [5] Jung J., Berger A. W., and Balakrishnan H., Modeling TTL-based Internet Caches, IEEE Infocom, 2003. [6] 藤原飛一, 紀一誠, (2-2) 間引きシステ ム入力待ち行列の解析, 日本オペレー ションズ・リサーチ学会和文論文誌, 54, pp.43–57, 2011. [7] Mockapetris P., Domain Names — Concepts and Facilities, RFC 1034, 1987. 参考文献 [1] インセプト, 8 秒ルール, IT 用語辞典 e-Words, http://e-words.jp/w/8E7A792E38 3ABE383BCE383AB.html, 2014/04/30. [2] Akamai Technologies, Akamai Reveals 2 Seconds as the New Threshold of Acceptability for eCommerce Web Page Response Times, press release, http://www.akamai.com/html/abo ut/press/releases/2009/press_09 1409.html, 2009/09/14. [3] DNS Prefetching, The Chromium Projects, http://www.chromium.org/develop ers/design-documents/dns-prefet ching, 2014/05/01. 6