DNSの負荷分散とキャッシュの
有効性に関する予備的検討
東京電機大学 服部敦 藤本衡
発表の流れ
• 研究背景・目的 – DNSキャッシュとロードバランス • DNS query データ計測 • キャッシュミス率のシミュレーション • まとめと今後の課題 2研究背景
• Webページの表示時間 – UXに大きな影響がある • ネットワーク環境の向上 – 2000年以前は8秒 → 現在では2秒以内 – 名前解決に要する時間が相対的に大きくなる • インターネットにおけるDNSトラフィック増加 3DNSキャッシュ
• 名前解決で得た情報をキャッシュ – リソースレコードの情報をTTLの期間保持 • キャッシュによる高速化 – 反復・再帰問い合わせを行わずに名前解決 • キャッシュヒット率がUXの向上に繋がる 4キャッシュミスした名前解決
5 クライアントPC キャッシュサーバ ルートDNSサーバ jpのDNSサーバ example.jpの DNSサーバ www.example.jp のIPアドレスは? 結果を キャッシュキャッシュヒットした名前解決
6 クライアントPC キャッシュサーバ ルートDNSサーバ jpのDNSサーバ example.jpの DNSサーバ www.example.jp のIPアドレスは? キャッシュ 有TTLとヒット率に関する研究
• Jung, et.al. (2002)
– MIT, KAISTでDNS queryデータの計測 – キャッシュヒット率と遅延の評価
– TTLがヒット率に大きく影響するのは1000[s]未満
• Jung, et.al. (2003)
– キャッシュヒットを再生過程を使ってモデル化
DNSにおける負荷分散
• 複数のサーバに要求を分散して転送 • 負荷による処理遅延を防ぐ
• 障害発生時のシステムダウンを回避
キャッシュサーバの負荷分散
9 クライアントPC ロードバランサ キャッシュサーバ キャッシュサーバ キャッシュサーバ www.example.jp のIPアドレスは? 結果をキャッシュキャッシュサーバの負荷分散
10 クライアントPC ロードバランサ キャッシュサーバ キャッシュサーバ キャッシュサーバ www.example.jp のIPアドレスは? キャッシュ 有キャッシュと負荷分散
• ロードバランスによるキャッシュ効率 – 複数のキャッシュサーバに負荷分散すると キャッシュ効率が低下する • キャッシュ効率を考えた負荷分散 – キャッシュヒット率を向上できる 11研究目的
• DNS queryデータの計測 – クエリの到着時間間隔の経験分布 – 名前解決に要する時間の経験分布 • 負荷分散のシミュレーション – 負荷分散なし・ラウンドロビン・ランダム • キャッシュミス率の比較 • キャッシュ効率を考えた負荷分散へ 12発表の流れ
• 研究背景・目的 – DNSキャッシュとロードバランス • DNS query データ計測 • キャッシュミス率のシミュレーション • まとめと今後の課題 13経験分布算出に必要なデータ
• 名前解決対象のドメイン名 • 名前解決要求の到着時刻 • 名前解決に対する応答送信時刻 • キャッシュヒットの有無 14経験分布算出に必要なデータ
15 クエリ到着時刻 応答送信時刻 クライアント キャッシュサーバ 権威サーバ 権威サーバ キャッシュヒットした 名前解決 キャッシュミスした 名前解決 キャッシュで解決 応答送信時刻 反復問い合わせ 反復問い合わせ クエリ到着時刻logging機能の設定
• カテゴリ – client • クライアントの要求処理のログを出力 – queries • 問い合わせログの出力 – resolver • 名前解決、リゾルバからの再帰的な問い合わせ処理 のログを出力 • デバッグレベル10 16ログメッセージ
17 クエリ到着時刻 応答送信時刻 クライアント キャッシュサーバ 権威サーバ 権威サーバ キャッシュヒットした 名前解決 キャッシュミスした 名前解決 反復問い合わせ キャッシュで解決client UDP request
client endrequest
resolver query resolver response queries www.example.jp IN A
計測対象
• 東京電機大学のDNSキャッシュサーバ • BIND9.8.2
計測対象の構成
19 キャッシュサーバ キャッシュサーバ キャッシュサーバ ロードバランサ ログ収集ホスト 再帰 問い合わせ 負荷分散 反復 問い合わせ syslog プライベートネットワーク rsyncシミュレーションに使用するデータ
• 期間:2013年9月18日~2013年10月18日 • 総クエリ数:16,520,247 • クエリタイプ別 20 クエリタイプ クエリ数 A 10,775,220 AAAA 3,613,683 PTR 1,274,047 MX 340,420 ANY 183,185 SRV 138,889 TXT 106,277 クエリタイプ クエリ数 SOA 65,416 DLV 11,853 NS 8,918 DS 1,217 CNAME 489 DNSKEY 423 RRSIG 104経験分布を算出したドメイン名
• Aレコードの問い合わせトップ10 21 ドメイン名 クエリ数 TTL www.google.com 754,192 300 time.apple.com 277,953 7200 e3191.dscc.akamaiedge.net 234,623 20 us-courier.push-apple.com.akadns.net 168,075 60 6to4.ipv6.microsoft.com 128,090 3600 www.bluecoat.com 114,727 7200 ipv6.msftncsi.com 109,936 1000 www.msftncsi.com 90,235 20 twitter.com 89,234 30 api.twitter.com 82,532 30到着間隔分布(累積分布)
• www.google.com
到着間隔分布(累積分布)
• e3191.dscc.akamaiedge.net
到着間隔分布(累積分布)
• us-courier.push-apple.com.akadns.net
到着間隔分布(累積分布)
• www.bluecoat.com
到着間隔分布(累積分布)
• www.msftncsi.com
到着間隔分布(累積分布)
• twitter.com
到着間隔分布(累積分布)
• api.twitter.com
応答時間分布の算出
• キャッシュヒット時の応答時間 – 名前解決に要する時間がほぼ0であった – 最大で0.001秒程度 • キャッシュミス時の応答時間を集計 29キャッシュミス時の応答時間分布
• www.google.com
30
キャッシュミス時の応答時間分布
• e3191.dscc.akamaiedge.net
31
キャッシュミス時の応答時間分布
• us-courier.push-apple.com.akadns.net
32
キャッシュミス時の応答時間分布
• www.bluecoat.com
33
キャッシュミス時の応答時間分布
• www.msftncsi.com
34
キャッシュミス時の応答時間分布
• twitter.com
35
キャッシュミス時の応答時間分布
• api.twitter.com
36
発表の流れ
• 研究背景・目的 – DNSキャッシュとロードバランス • DNS query データ計測 • キャッシュミス率のシミュレーション • まとめと今後の課題 37シミュレーションの概要
• パラメータ – 到着時間間隔分布 – 応答時間分布 – TTL – キャッシュサーバ数 – タイムスケール • キャッシュミス率をシミュレーション 38シミュレーションの設定
• 名前解決要求の到着間隔 – 到着間隔分布に従うランダムな間隔で到着 • ロードバランサの振る舞い – ラウンドロビン・ランダムポリシーで割り振り • キャッシュミスした場合 – 応答時間分布に基づく乱数を発生させ、要求処 理状態へ – 処理中の同一ドメインへの要求はミスとする 39シミュレーションの設定
• 要求処理が完了後にキャッシュ保持状態 – TTLのカウントダウンを開始 – TTLが0になったらキャッシュを消去 • キャッシュヒットした場合の処理時間は0 • 単一のドメイン名からの要求 • シミュレーションの試行回数 – 1試行で名前解決要求を10000個発生 – 10000試行の結果から平均・信頼区間を算出 40シミュレーション1
• 各ポリシーのキャッシュミス率を比較 – TTL:30~30000 – キャッシュサーバ数:5 – タイムスケール:1 41TTLを変化させたキャッシュミス率
42
シミュレーション2
• サーバ数を変化させキャッシュミス率を比較 – TTL:1~100,000 – キャッシュサーバ数:2~10 – タイムスケール:1 43サーバ数を変化させたミス率
44
サーバ数を変化させたミス率
45
• www.google.com ラウンドロビン
ランダムより著しく 悪化している
時間帯別の到着間隔
• 時間帯別で到着間隔は変化するはず – 人のいる時間帯(日中)は要求が多い – 人のいない時間(深夜)は要求が少ない • キャッシュミス率も異なるのでは? 46時間帯毎のクエリ数
• www.google.com
時間帯毎のクエリ数
48
時間帯毎のクエリ数
49
時間帯毎のクエリ数
50
時間帯毎のクエリ数
• www.msftncsi.com
時間帯毎のクエリ数
• twitter.com
時間帯毎のクエリ数
• api.twitter.com
時間帯毎のクエリ
• 深夜から早朝にかけてクエリのピーク – 予想とは違った時間帯にピークが来ている – 機械的なクエリ • 日中にクエリのピーク – 機械的でないクエリ 54時間帯別で到着間隔の算出
• 各ドメイン名の到着間隔を時間帯別に集計 – 00:00:00~05:59:59 – 06:00:00~11:59:59 – 12:00:00~17:59:59 – 18:00:00~23:59:59 55時間帯別の到着間隔分布
56
時間帯別の到着間隔分布
57
時間帯別の到着間隔分布
58
時間帯別の到着間隔分布
59
時間帯別の到着間隔分布
• www.msftncsi.com
時間帯別の到着間隔分布
• twitter.com
時間帯別の到着間隔分布
• api.twitter.com
シミュレーション3(時間帯別)
• 時間帯毎のキャッシュミス率を比較 – TTL:Aレコードに設定されている値 – キャッシュサーバ数:5 – タイムスケール:1~10000 63時間帯別のキャッシュミス率
• www.google.com
64
時間帯別のキャッシュミス率
• www.google.com
65
時間帯別のキャッシュミス率
• www.google.com
66
時間帯別のキャッシュミス率
• twitter.com
67
時間帯別のキャッシュミス率
• twitter.com
68
時間帯別のキャッシュミス率
• twitter.com
69
シミュレーション4(時間帯別)
• TTLを変化させキャッシュミス率を比較 – TTL: Aレコードに設定されている • 0.1, 1, 10, 100, 1000 – キャッシュサーバ数:5 – タイムスケール:1 70TTLを変化させたキャッシュミス率
71
TTLを変化させたキャッシュミス率
72
TTLを変化させたキャッシュミス率
73
TTLを変化させたキャッシュミス率
74
TTLを変化させたキャッシュミス率
75
0時~6時 • e3191.dscc.akamaiedge.net
TTLを変化させたキャッシュミス率
76
6時~12時 • e3191.dscc.akamaiedge.net
TTLを変化させたキャッシュミス率
77
12時~18時 • e3191.dscc.akamaiedge.net
TTLを変化させたキャッシュミス率
78
18時~24時 • e3191.dscc.akamaiedge.net
TTLを変化させたキャッシュミス率
79
0時~6時
TTLを変化させたキャッシュミス率
80
6時~12時
TTLを変化させたキャッシュミス率
81
12時~18時
TTLを変化させたキャッシュミス率
82
18時~24時
TTLを変化させたキャッシュミス率
83
0時~6時
TTLを変化させたキャッシュミス率
84
6時~12時
TTLを変化させたキャッシュミス率
85
12時~18時
TTLを変化させたキャッシュミス率
86
18時~24時
TTLを変化させたキャッシュミス率
87
0時~6時
TTLを変化させたキャッシュミス率
88
6時~12時
TTLを変化させたキャッシュミス率
89
12時~18時
TTLを変化させたキャッシュミス率
90
18時~24時
TTLを変化させたキャッシュミス率
91
0時~6時
TTLを変化させたキャッシュミス率
92
6時~12時
TTLを変化させたキャッシュミス率
93
12時~18時
TTLを変化させたキャッシュミス率
94
18時~24時
TTLを変化させたキャッシュミス率
95
0時~6時
TTLを変化させたキャッシュミス率
96
6時~12時
TTLを変化させたキャッシュミス率
97
12時~18時
TTLを変化させたキャッシュミス率
98
18時~24時
シミュレーション5(時間帯別)
• キャッシュサーバ数によるキャッシュミス率 • TTL:1~100000 • キャッシュサーバ数:2~10 • タイムスケール:1 99サーバ数を変化させたミス率
100
• www.google.com 0時~6時
サーバ数を変化させたミス率
101
• www.google.com 0時~6時
サーバ数を変化させたミス率
102
• www.google.com 6時~12時
サーバ数を変化させたミス率
103
• www.google.com 6時~12時
サーバ数を変化させたミス率
104
• www.google.com 12時~18時
サーバ数を変化させたミス率
105
• www.google.com 12時~18時
サーバ数を変化させたミス率
106
• www.google.com 18時~24時
サーバ数を変化させたミス率
107
• www.google.com 0時~6時
実測のミス率と比較
• www.google.com 108 時間帯 実測値 シミュレーション 0-6 0.0161395 0.1578095 6-12 0.0147337 0.2152604 12-18 0.0148195 0.4218725 18-24 0.0154831 0.2599871 total 0.0154676 0.2286550実測のミス率と比較
• twitter.com 109 時間帯 実測値 シミュレーション 0-6 0.666927 0.999998 6-12 0.353979 0.999991 12-18 0.164821 0.999967 18-24 0.400568 0.999994 total 0.354693 0.999990実測のミス率と比較
• 計測したデータを見てみると
– キャッシュミス数が明らかに少ない
– TTLが0になっているのにキャッシュで応答