IT 注目度 84

CloudflareがDNSキャッシュ構造を大幅最適化、1.1.1.1のメモリ使用量を削減し100TBの空き容量を確保

※本記事の要約および解説はAIが自動生成しており、誤りが含まれる可能性があります。事実確認は元ニュースをご参照ください。

クラウドフレアは、パブリックDNSリゾルバー「1.1.1.1」で使用されているDNSキャッシュのデータ構造を徹底的に見直し、システム全体で約100TBものメモリを節約したと発表しました。この最適化は、DNSキャッシュの効率的な運用と、より大規模なデータ保持能力の確保を目的としています。

【Who/What】クラウドフレアが、自社のDNS基盤「Big Pineapple」を支える1.1.1.1のDNSキャッシュ構造を最適化しました。具体的には、キャッシュ1件あたりのメモリ使用量を、従来の953バイトから420バイトへと56%削減しました。

【How/Why】最適化は多岐にわたります。一つ目は、Rustのデータ型(VecやString)の構造を見直し、固定サイズで保存できるBox系の型に置き換えることで、キャッシュ1件あたりから64バイトを削減しました。二つ目は、DNS応答の保存方法を改善し、複数の区分を単一リストにまとめることで28バイトの削減を実現しました。三つ目は、DNSレコードのドメイン名保存方法を見直し、検索キーからの復元を基本とする方式に変更しました。さらに、AレコードやAAAAレコードなど、トラフィックの大部分を占めるレコードの種類管理方法を改善し、1件あたり120バイトの節約を達成しました。

【結果と効果】これらの5段階の最適化を組み合わせた結果、キャッシュ1件のメモリ使用量は劇的に減少し、メモリ確保量も大幅に削減されました。これにより、常駐メモリの99パーセンタイル(p99)では43%の減少(9.3GBから5.3GB)が確認され、Big Pineappleを稼働させるサーバー群全体で合計約100TBものメモリを空け出すことに成功しました。さらに、キャッシュへの書き込み性能は43%向上し、検索時間も19%短縮されました。クラウドフレアは、この空いた容量をDNSキャッシュの容量拡大に充当し、メモリ使用量を増やさずにより多くの回答をキャッシュに保持することで、上流のDNSサーバーへの問い合わせ回数削減を目指すとしています。


背景

1.1.1.1は、ドメイン名(例:cloudflare.com)をIPアドレスに変換するパブリックDNSリゾルバーです。DNSキャッシュとは、一度問い合わせた結果を一時的に保存する仕組みであり、これにより同じ問い合わせが来た際に毎回上流のサーバーに問い合わせる手間を省き、高速なサービス提供を可能にしています。キャッシュの効率化は、大規模なトラフィックを支える上で極めて重要です。

重要用語解説

  • DNSキャッシュ: ドメイン名とIPアドレスの対応情報を一時的に保存する仕組み。これにより、問い合わせのたびに上流のサーバーにアクセスする手間を省き、応答速度と安定性を向上させます。
  • Big Pineapple: クラウドフレアが1.1.1.1などのサービスを支えるために使用している、大規模なDNS基盤システム。膨大な数のキャッシュエントリを管理しています。
  • p99: パーセンタイル(Percentile)の略。データセットの99パーセンタイルを指し、データ全体の99%がこの値以下であることを示す指標。ここでは、メモリ使用量の極端な最大値(負荷がかかった際のメモリ消費)の目安として用いられています。

今後の影響

今回のメモリ最適化により、クラウドフレアは空いた100TBの容量をDNSキャッシュの容量拡大に振り向けられます。これにより、より多くのDNS応答をキャッシュに保持できるようになり、ユーザーが上流のDNSサーバーに問い合わせる回数が減り、インターネット全体のDNS解決の信頼性と速度が向上することが期待されます。これはインフラストラクチャの安定性向上に直結します。