H2O と QLog で QUIC をデバッグ

コンピュータープログラムの質に関する重要な指標のひとつにデバッグのしやすさがあります。これは、さまざまな実装との相互運用性が必要なプロトコルの実装において特に重要です。デバッグのしやすさは、正確性のテストにおいてだけでなく、パフォーマンスを調整する機会を特定するのにも役立ちます。現在、QUICユーザースペースで実装される必要があるため、デバッグのしやすさは QUIC において不可欠です。このブログ記事では、QUIC エンドポイントのインクリメンタルなログ形式である QLog へのサポートを Fastly のエッジクラウドプラットフォーム全体にデプロイされているオープンソースの HTTP サーバー H2O に追加した方法をご紹介します。

QUICQLog、デバッグツール

QUIC は、HTTP/3 で使用される、安全性に優れた低レイテンシのトランスポートレイヤープロトコルです。この魅力的な新しいプロトコルでは、TCP が今日のインターネット環境で直面している基本的な問題が解決されています。QUIC に興味のある方は、Fastlyエンジニア Jana Iyengarよる QUIC 関連のブログシリーズをご覧ください。

QLog は QUIC エンドポイントのログ形式です。QLog プロジェクトは、QVis と呼ばれる QLog データを視覚化する JavaScript ベースのツールスイートも提供しています。QLog と QVis は一緒に語られることが多いのですが、QLog のログ形式は QVis 無しでも役立つことに留意すべきです。これは、QLog を活用するツールの構築を可能にする標準のログ形式が現在提供されているためです。QUIC のトレースデータをサポートする事実上の標準言語は、開発者にとってだけではなく、より広範なインターネットコミュニティ全体にメリットをもたらします。これが、Fastly が QLog プロジェクトをサポートしている理由です。現在、QLog の仕様は QUIC に合わせて進化しています。

H2Oイベントトレースインフラの再利用

H2O サーバーは、包括的な低レベルのイベントトレース機能を備えており、この機能は eBPF または DTrace によって実行されます (プラットフォームよって異なります)。具体的には、H2O サーバーとそのライブラリ (例えば H2O の QUIC 実装である quicly) を USDT (User Statically Defined Tracing) プローブで測定することでイベントのトレースが行われます。アクティブでないプローブのオーバーヘッドは単一の NOP 命令にすぎないため、プローブは本番環境のパフォーマンスに負担をかけません。そこで、この既存のトレースインフラを活かすため、H2O のパワフルな低レベルのトレース機能を維持しながら QLog 形式のサポートを可能にする後処理の QLog アダプタを記述しました。アダプタを使用することで、将来的に H2O のトレースインフラを変更せずに、異なるログ形式やツールを検討することが可能になります。

この作業では、H2O の低レベルトレース機能と QLog の高レベルのセマンティクスの構造的な違いの扱いに苦心しました。例えば、H2O ではパケットとストリームのイベントが個別にトレースされますが、これらは QLog 形式では緊密に連結されています。柔軟性のある設計を構築することで、最終的にこのマッピングを成功させることができました。

QUIC未来

QUIC は今後、ますます発展すると思われます。IETF による標準化プロセスも最終段階に入り、Google の Chrome ブラウザは IETF QUIC を正式にサポートしています。また Fastly では、サーバーフリート全体に QUIC と HTTP/3 をデプロイしています。その結果、顧客の数が増えるにつれて、QUIC のトラフィックも増加しています。QUIC エンドポイントの統計データを QLog で記録し、確認できるようになったことで、Fastly のプロトコルエンジニアリングチームはより安全で高速なインターネットの構築を加速できます。

Toru Maesaka
Staff Software Engineer
投稿日

この記事は3分で読めます

興味がおありですか?
エキスパートへのお問い合わせ
この投稿を共有する
Toru Maesaka
Staff Software Engineer

Fastly の Staff Software Engineer として、インターネットのエッジにあるシステムの構築を専門としています。より分かりやすく、使いやすい高性能システムの開発に日々取り組んでいます。

Fastly試してみませんか ?

アカウントを作成してすぐにご利用いただけます。また、いつでもお気軽にお問い合わせください。