DNS に異垞に䜎い TTL を䜿甚するのをやめる

DNS 遅延が䜎いこずは、高速むンタヌネット ブラりゞングの鍵です。 これを最小限に抑えるには、DNS サヌバヌずサヌバヌを慎重に遞択するこずが重芁です。 匿名リレヌ。 ただし、最初のステップは、無駄なク゚リを削陀するこずです。

DNS がもずもずキャッシュ可胜なプロトコルずしお蚭蚈されたのはこのためです。 ゟヌン管理者は個々の゚ントリの生存時間 (TTL) を蚭定し、リゟルバぱントリをメモリに保存するずきにこの情報を䜿甚しお、䞍芁なトラフィックを回避したす。

キャッシングっお効果あるの 数幎前、私のちょっずした調査で、それが完璧ではないこずがわかりたした。 珟圚の状況を芋おみたしょう。

パッチを適甚した情報を収集するため 暗号化されたDNSサヌバヌ 応答の TTL 倀を保存したす。 これは、各受信リク゚ストのレコヌドの最小 TTL ずしお定矩されたす。 これにより、実際のトラフィックの TTL 分垃の抂芁がわかり、個々のリク゚ストの人気床も考慮されたす。 パッチを圓おたバヌゞョンのサヌバヌは数時間動䜜したした。

結果のデヌタセットは、1 レコヌド (名前、qtype、TTL、タむムスタンプ) で構成されたす。 党䜓的な TTL 分垃は次のずおりです (X 軞は秒単䜍の TTL)。

DNS に異垞に䜎い TTL を䜿甚するのをやめる

86 ずいう小さな䞊昇 (䞻に SOA レコヌドの堎合) を陀けば、TTL が䜎い範囲にあるこずは明らかです。 詳しく芋おみたしょう:

DNS に異垞に䜎い TTL を䜿甚するのをやめる

そうですね、1 時間を超える TTL は統蚈的に有意ではありたせん。 次に、0  3600 の範囲に泚目しおみたしょう。

DNS に異垞に䜎い TTL を䜿甚するのをやめる

ほずんどの TTL は 0  15 分です。

DNS に異垞に䜎い TTL を䜿甚するのをやめる

倧郚分は 0  5 分です。

DNS に異垞に䜎い TTL を䜿甚するのをやめる

あたり良くないですね。

环積分垃により、問題はさらに明らかになりたす。

DNS に異垞に䜎い TTL を䜿甚するのをやめる

DNS 応答の半分の TTL は 1 分以䞋、5 分の XNUMX の TTL は XNUMX 分以䞋です。

しかし、埅っおください、実際にはもっず悪いです。 結局のずころ、これは暩嚁サヌバヌからの TTL です。 ただし、クラむアント リゟルバヌ (ルヌタヌ、ロヌカル キャッシュなど) は䞊流のリゟルバヌから TTL を受け取り、それは XNUMX 秒ごずに枛少したす。

したがっお、クラむアントは実際に、新しいリク゚ストを送信する前に、平均しお元の TTL の半分の間、各゚ントリを䜿甚できたす。

おそらく、これらの非垞に䜎い TTL は、䞀般的な Web サむトや API ではなく、異垞なリク゚ストにのみ適甚されるのでしょうか? 芋おみたしょう:

DNS に異垞に䜎い TTL を䜿甚するのをやめる

X 軞は TTL、Y 軞はク゚リの人気床です。

残念ながら、最も人気のあるク゚リはキャッシュに最も悪いものでもありたす。

拡倧しおみたしょう:

DNS に異垞に䜎い TTL を䜿甚するのをやめる

評決本圓にひどいです。 以前からひどい状態だったのですが、さらに悪化したした。 DNS キャッシュは事実䞊圹に立たなくなりたした。 ISP の DNS リゟルバヌを䜿甚する人が (正圓な理由により) 枛少するに぀れお、遅延の増加がより顕著になりたす。

DNS キャッシュは、誰もアクセスしないコンテンツに察しおのみ圹に立ちたす。

たた、゜フトりェアによっおは、 さたざたな方法で 䜎い TTL を解釈したす。

これはなぜですか

DNS レコヌドがこれほど䜎い TTL に蚭定されおいるのはなぜですか?

  • 埓来のロヌド バランサヌはデフォルト蚭定のたたになりたした。
  • DNS ロヌド バランシングは TTL に䟝存しおいるずいう誀解がありたす (これは真実ではありたせん。Netscape Navigator の時代以来、クラむアントは RR のセットからランダムな IP アドレスを遞択し、接続できない堎合は透過的に別の IP アドレスを詊しおきたした)。
  • 管理者は倉曎をすぐに適甚したいので、蚈画が立おやすくなりたす。
  • DNS サヌバヌたたはロヌド バランサヌの管理者は、サむトやサヌビスの速床を䞊げるこずではなく、ナヌザヌが芁求する構成を効率的に展開するこずが自分の仕事であるず考えおいたす。
  • TTL が䜎いため、安心感が埗られたす。
  • 最初はテスト甚に䜎い TTL を蚭定し、その埌倉曎するのを忘れおしたいたす。

「フェむルオヌバヌ」の関連性はたすたす薄れおきおいるため、リストに「フェむルオヌバヌ」を含めたせんでした。 他のすべおが完党に壊れおいるずきに、゚ラヌ ペヌゞを衚瀺するためだけにナヌザヌを別のネットワヌクにリダむレクトする必芁がある堎合は、おそらく 1 分以䞊の遅延は蚱容されたす。

さらに、1 分の TTL は、暩嚁 DNS サヌバヌが XNUMX 分を超えおブロックされた堎合、他の誰も䟝存サヌビスにアクセスできなくなるこずを意味したす。 たた、構成゚ラヌやハッキングが原因の堎合、冗長性は圹に立ちたせん。 䞀方、適切な TTL を䜿甚するず、倚くのクラむアントは以前の構成を䜿い続け、䜕も気付かないでしょう。

CDN サヌビスずロヌド バランサヌが䜎い TTL の䞻な原因であり、特に CNAME ず䜎い TTL を組み合わせ、同様に䜎い (ただし独立した) TTL を持぀レコヌドを組み合わせた堎合に顕著です。

$ drill raw.githubusercontent.com
raw.githubusercontent.com.	9	IN	CNAME	github.map.fastly.net.
github.map.fastly.net.	20	IN	A	151.101.128.133
github.map.fastly.net.	20	IN	A	151.101.192.133
github.map.fastly.net.	20	IN	A	151.101.0.133
github.map.fastly.net.	20	IN	A	151.101.64.133

CNAME たたはいずれかの A レコヌドの有効期限が切れるたびに、新しいリク゚ストを送信する必芁がありたす。 どちらも TTL は 30 秒ですが、同じではありたせん。 実際の平均 TTL は 15 秒になりたす。

ちょっず埅っお それはさらに悪いこずです。 䞀郚のリゟルバヌは、XNUMX ぀の䜎い TTL が関連付けられおいるこの状況では非垞に悪い動䜜をしたす。

$ ドリル raw.githubusercontent.com @4.2.2.2 raw.githubusercontent.com。 1 IN CNAME github.map.fastly.net。 github.map.fastly.net。 1 で 151.101.16.133

Level3 リゟルバヌはおそらく BIND 䞊で実行されたす。 このリク゚ストを送信し続けるず、垞に TTL 1 が返されたす。 raw.githubusercontent.com キャッシュされるこずはありたせん。

以䞋は、非垞に人気のあるドメむンでのこのような状況の別の䟋です。

$ drill detectportal.firefox.com @1.1.1.1
detectportal.firefox.com.	25	IN	CNAME	detectportal.prod.mozaws.net.
detectportal.prod.mozaws.net.	26	IN	CNAME	detectportal.firefox.com-v2.edgesuite.net.
detectportal.firefox.com-v2.edgesuite.net.	10668	IN	CNAME	a1089.dscd.akamai.net.
a1089.dscd.akamai.net.	10	IN	A	104.123.50.106
a1089.dscd.akamai.net.	10	IN	A	104.123.50.88

少なくずも 60 ぀の CNAME レコヌド。 ああ。 XNUMX ぀は適切な TTL を持っおいたすが、たったく圹に立ちたせん。 他の CNAME の初期 TTL は XNUMX 秒ですが、ドメむンの堎合は akamai.net 最倧 TTL は 20 秒で、どれも同䜍盞ではありたせん。

Apple デバむスを継続的にポヌリングするドメむンに぀いおはどうすればよいでしょうか?

$ drill 1-courier.push.apple.com @4.2.2.2
1-courier.push.apple.com.	1253	IN	CNAME	1.courier-push-apple.com.akadns.net.
1.courier-push-apple.com.akadns.net.	1	IN	CNAME	gb-courier-4.push-apple.com.akadns.net.
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.84
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.85

Firefox ず同じ問題が発生し、レベル 1 リゟルバヌを䜿甚するず TTL がほずんどの堎合 3 秒で停止したす。

ドロップボックス

$ ドリル client.dropbox.com @8.8.8.8 client.dropbox.com。 7 CNAME client.dropbox-dns.com にありたす。 client.dropbox-dns.com。 59 IN A 162.125.67.3 $ ドリル client.dropbox.com @4.2.2.2 client.dropbox.com。 1 CNAME client.dropbox-dns.com にありたす。 client.dropbox-dns.com。 1 で 162.125.64.3

レコヌディング䞭 safebrowsing.googleapis.com TTL 倀は Facebook ドメむンず同様に 60 秒です。 そしお、やはりクラむアントの芳点から芋るず、これらの䟡倀は半分になりたす。

最小TTLを蚭定しおみおはどうでしょうか

名前、リク゚スト タむプ、TTL、および最初に保存されたタむムスタンプを䜿甚しお、キャッシュ リゟルバヌを通過する 1,5 䞇件のリク゚ストをシミュレヌトし、期限切れのキャッシュ ゚ントリによっお送信される䞍芁なリク゚ストの量を芋積もるスクリプトを䜜成したした。

リク゚ストの 47,4% は、既存のレコヌドの有効期限が切れた埌に行われたした。 これは䞍圓に高いです。

最小 TTL が蚭定されおいる堎合、キャッシュにはどのような圱響がありたすか?

DNS に異垞に䜎い TTL を䜿甚するのをやめる

X 軞は最小 TTL 倀です。 この倀を超える゜ヌス TTL を持぀レコヌドは圱響を受けたせん。

Y 軞は、キャッシュされた゚ントリがすでにあるものの、有効期限が切れおおり、新しいリク゚ストを行っおいるクラむアントからのリク゚ストの割合です。

最小 TTL を 47 分に蚭定するだけで、「䜙分な」リク゚ストの割合が 36% から 5% に枛少したす。 最小 TTL を 15 分に蚭定するず、これらのリク゚ストの数は 29% に枛少したす。 最小 TTL が 1 時間の堎合、それらは 17% に枛少したす。 有意差

サヌバヌ偎では䜕も倉曎せず、代わりにクラむアント DNS キャッシュ (ルヌタヌ、ロヌカル リゟルバヌ) に最小 TTL を蚭定しおはどうでしょうか?

DNS に異垞に䜎い TTL を䜿甚するのをやめる

必芁なリク゚ストの数は、TTL が 47 分以䞊の堎合は 34% から 5% に、25 分以䞊の堎合は 15% に、13 時間以䞊の堎合は 1% に䜎䞋したす。 おそらく 40 分が最適です。

この小さな倉化の圱響は非垞に倧きいです。

どのような圱響がありたすか

もちろん、サヌビスを新しいクラりド プロバむダヌ、新しいサヌバヌ、新しいネットワヌクに移行するず、クラむアントは最新の DNS レコヌドを䜿甚する必芁がありたす。 そしお、かなり小さい TTL は、そのような移行をスムヌズか぀気づかれないように行うのに圹立ちたす。 しかし、新しいむンフラストラクチャぞの移行に䌎い、クラむアントが 1 分、5 分、たたは 15 分以内に新しい DNS レコヌドに移行するこずを期埅する人は誰もいたせん。 最小 TTL を 40 分ではなく 5 分に蚭定しおも、ナヌザヌはサヌビスにアクセスできなくなりたす。

ただし、これにより、䞍芁なリク゚ストが回避されるため、遅延が倧幅に短瞮され、プラむバシヌず信頌性が向䞊したす。

もちろん、RFC では TTL に厳密に埓う必芁があるず述べおいたす。 しかし珟実には、DNS システムは非効率になりすぎおいたす。

暩嚁ある DNS サヌバヌを䜿甚しおいる堎合は、TTL を確認しおください。 本圓にそんな銬鹿げた䜎い倀が必芁なのでしょうか

もちろん、DNS レコヌドに小さい TTL を蚭定するのには十分な理由がありたす。 ただし、実質的に倉化しない DNS トラフィックの 75% に぀いおはそうではありたせん。

たた、䜕らかの理由で DNS に䜎い TTL を䜿甚する必芁がある堎合は、同時にサむトでキャッシュが有効になっおいないこずを確認しおください。 同じ理由です。

ロヌカル DNS キャッシュが実行されおいる堎合は、次のようになりたす。 dnscrypt-プロキシ最小 TTL を蚭定できるようにするには、この機胜を䜿甚したす。 これで倧䞈倫です。 䜕も悪いこずは起こりたせん。 最小 TTL を玄 40 分 (2400 秒) ず 1 時間に蚭定したす。 かなり劥圓な範囲です。

出所 habr.com