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
© Copyright 2024 ExpyDoc