2025/11/28 12:11 A Tale of Four Fuzzers

やっほー、ロボ子!TigerBeetleのルーティングアルゴリズムがオーバーホールされたってニュース、見たかのじゃ?

はい、博士。ネットワークトポロジーの多様性に対応するためだそうですね。以前のリングトポロジーでは対応しきれなかった問題があったとか。

そうそう!V1ルーティングでは、ネットワークトポロジーの変化に対応できなかったり、メッセージ損失時の再試行に時間がかかったりしたみたいじゃな。

なるほど。そこで登場したのが、Adaptive Replication Routing (ARR) ですね。プライマリをリングの中央に配置して、メッセージの重要度を下げることで、問題を解決する、と。

その通り!ARRはリング自体を動的にして、ランタイムにレイテンシを最小化するレプリカの順序を選択するらしいぞ。賢いのじゃ!

システムモデルを構築せずに、prepareメッセージのレプリケーション時間を直接測定して、最適なルートを選択するんですね。実験的なルートを試して、パフォーマンスに基づいてトポロジーを切り替える、というのも面白いです。

しかも、TigerBeetleはトランザクションのACID特性を提供していて、特にDurability(永続性)を重視しているのがポイントじゃ。データはprepareメッセージのハッシュチェーンログから派生するらしいぞ。

prepareメッセージ(1MiB)を6つのレプリカに分散してレプリケーションを行うんですね。柔軟なクォーラム(3/6)を使用することで、可用性も高めていると。

ARRのインターフェースには、レプリカ数、自身のレプリカID、タイミング情報、ルーティング、ビュー変更が含まれているみたいじゃな。シンプルで良いのじゃ。

記事では、TigerBeetleではメインのシステム全体ファザーに加え、各サブシステムにターゲットを絞ったファザーを持つことが推奨されていると述べられていますね。

そうそう!サブシステムを分離してファジングするために、ターゲットとシステムの接続を特定し、インターフェースの背後に抽象化し、スタブ実装を提供するのがコツじゃ。

ARRのインターフェースは、TigerBeetleに依存せず、完全に独立しているんですね。テストの決定論に関する考慮事項も興味深いです。

テストは決定論的であるべきだけど、ランダム性も利用して状態空間を探索し、バグを発見することが重要!Zigは、テストごとに異なるランダムシードを提供して、再現性を高めているのが偉いのじゃ。

ARRには、Exhausting Positive Space、Exploring Negative Space、Qualitative Fuzzing、Sweet Dreams (Manson’s Version)、Can I Count? Noという5つのファザーが実装されているんですね。

Sweet Dreams (Manson’s Version) って名前が面白い!Routingインターフェースのメソッドをランダムに呼び出して、不変条件が満たされるかを検証するらしいぞ。

VOPR(whole system fuzzer)を使用し、現実的なネットワーク障害をシミュレートして、ARRのパフォーマンスを検証するのも重要ですね。

ARRのコスト関数は、当初は中央値と最大値のペアだったけど、すべてのレイテンシの合計を追加することで改善されたみたいじゃな。細かいけど大事な改善なのじゃ。

レプリケーションルートは、prepareメッセージがリングに沿って流れ、確認応答がプライマリに直接流れるスター型トポロジーであることが判明したんですね。

インターフェースを最小限に抑え、データ指向設計原則を適用することで、コードをより簡単にファジングできる!肯定的な空間と否定的な空間の両方をファジングし、境界付近の値を重点的にテストするのもポイントじゃ。

テストのランダムシードを生成し、テストプロセス外で管理することで、クラッシュ時の再現性を確保する。ファザーはコード内のバグだけでなく、問題に対する理解のバグを発見するために書く、というのも深いですね。

システム全体ファザーとサブシステムファザーの両方を使用し、インターフェースを適切に設計することが重要!今回のニュースは、ファジングの重要性を改めて教えてくれる内容だったのじゃ。

そうですね、博士。大変勉強になりました。

ところでロボ子、ARRってAdaptive Replication Routingの略だけど、私にはいつも「アール」って聞こえるのじゃ。まるで海賊みたいじゃな!

博士、それはちょっと無理がありますよ…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
