次のレベルのQUICの相互接続テスト

カナダ発のTrueNuff.tv が送る面白ビデオシリーズ「Does it blend?」では、ブレンダー(日本ではミキサーと呼ばれていますね)を使って、物事が実際に何でできているかを調べます。 いくつもの物を混ぜあわせることはブレンダーなしでは面倒ですよね。wolfSSL は、このブレンダーの便利さを相互接続テストに使うことを思いつきました。wolfSSL は ngtcp2 プロジェクトに、新しい QUIC 関連のテスト スイートを寄稿しました。 このテストスイートがどのように機能し、wolfSSL を使用する上でどのように役立つかご説明しましょう。

Ngtcp2 は、主要なオープン ソース QUIC 実装です。 ブログで紹介しましたが、wolfSSLはQUICサポートを追加しました。 wolfSSL に続いて、OpenSSL の quictls フォーク、BoringSSL、GnuTLS、picotls など、他のほとんどの TLS/SSL ライブラリもサポートしています。 Libressl はまもなくのようです。 (OpenSSL 自体はQUICをサポートをしておらず、近い将来のサポートもなさそうです。これについては、前述のブログ投稿で取り上げました。)

wolfSSL のユーザーが最も関心を持っているのは、最先端の TLS を取得することだけではなく、現在および今後のすべてのリリースで、他のすべての TLS ライブラリと正しく効率的に通信できるということのはずです。

QUIC の TLS の使用は TCP と非常に似ていますが、いくつかの違いがあります。 QUIC のコンテキストで TLS ライブラリを相互にテストすることで、QUIC 自体の相互運用性を検証できるだけでなく、「通常の」TLS 接続でも使用される機能と構成の組み合わせを検証することができます。ですが、この組み合わせ検証作業は手動では大変面倒な作業となります。

これぞブレンダー

ngtcp2 テスト スイートは、ngtcp2 自体の一部になりました。このテストスイートは github の CI に追加されるため、今後のすべての開発と新しいリリース (wolfSSL およびその他すべての TLS 実装) で常に検証されます。

このテストは自分で実行できます。 ngtcp2 の github には、チェックアウトしてビルドするための手順を用意してあります。新しいテスト スイートには、使用方法を説明したREADMEを用意しました。テスト スイートは Python の pytest に基づいているので、pytestが動作するすべてのプラットフォームで実行できるはずです。

ngtcp2 には、ビルドしたTLS ライブラリごとに 1 つずつ、「サンプル」のサーバーとクライアントの実行可能ファイルが含まれています。 コンフィギュレーションオプションに`–with-wolfssl` のみを設定すると、wolfSSL サーバーとクライアントのみが構築されます。その後、テスト スイートは、相互運用性をさまざまなシナリオで検証します。

ngtcp2のコンフィギュレーションオプションとして`–with-wolfssl –with-openssl` のように追加の TLS ライブラリを指定すると、2 つのサーバーと 2 つのクライアントの実行可能ファイルが得られます。次に、テストでは、可能なすべての組み合わせ (wolfssl-wolfssl、openssl-openssl、openssl-wolfssl、および wolfssl-openssl) が試行されます。

つまり、自分ですべてのTLSライブラリを組み合わせて相互接続テストを行う必要はありません。テストスイートが、TLSライブラリの組み合わせを自動で作成して相互接続を実行します。つまり、テストスイートはTLSライブラリの相互接続試験のブレンダーとして動作するわけです。

独自の QUIC アプリケーションを開発する場合、テスト スイートはそれを検証するための優れた場所となります。テストスイートは実行可能ファイルを組み合わせて実行してくれます。また、その組み合わせを目的に応じて変更するのも直接的で簡単にできます。

たとえば、現在、wolfSSL がスポンサーとなっている、インターネット転送用の”スイス アーミー ナイフ”である curl のテストに使用する方法を検討しています。 ngtcp2 を使用して、curl に wolfSSL QUIC サポートを追加しましたが、そこでのテスト範囲も拡張する必要があります。

みんなのブレンダー

このngtcp2プロジェクトに寄稿した我々のテストスイートは広く役に立ってくれると信じています。このテストスイートを、我々のCI時のテストスイートの一部として開発することもできましたが、それでは他の TLS プロジェクトがそのテストスイートを採用するための障壁になります。 また、たとえば GnuTLS と BoringSSL の間で相互運用の問題が発生した場合、私たちはその解決に関与したくありませんし、できません。ですから、このテストスイートを寄稿して皆さんで使っていただくことに決めました。

コードを、それが最も意味を成すところに自由に追加できるという OSS のこの側面は、真の強みです。 wolfSSLはこのテストスイートを喜んで寄稿いたします。

ご質問は、info@wolfssl.jpまでお問い合わせください。

原文: https://www.wolfssl.com/next-level-interop-testing-quic/