Quinnは、IETF QUICトランスポートプロトコルの純粋な有益で非互換性のある実装です。このプロジェクトは、2018年にDirkjan OchtmanとBenjamin Saundersによってサイドプロジェクトとして設立され、それ以来30以上のリリースが見られました。商業環境でQuinnを使用している場合は、プロジェクトのスポンサーを検討してください。
例
$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.tomlこれにより、クライアントが./Cargo.tomlを取得して、現在の作業ディレクトリにサービスを提供するループバックアドレスにHTTP 0.9サーバーを起動します。デフォルトでは、サーバーは自己署名の証明書を生成し、それをディスクに保存します。そこでは、クライアントが自動的に見つけて信頼します。
リンク
Quinnのエンドポイントは、いくつの接続が使用されていても、単一のUDPソケットに対応します。単一のエンドポイントで高い集約データレートを処理するには、ほとんどの環境でデフォルトで構成されているよりも大きなUDPバッファーが必要になる場合があります。安定したネットワークリンク上で不規則なレイテンシやスループットが観察された場合は、使用するバッファサイズの増加を検討してください。たとえば、Quinnに渡す前に使用するUDPソケットのSO_SNDBUFおよびSO_RCVBUFオプションを調整できます。一部のプラットフォーム(Linuxなど)には、UDPバッファーサイズを増やすために、プロセスのために高度な特権または変更されたシステム構成が必要であることに注意してください。
デフォルトでは、Quinnクライアントは、接続するサーバーの暗号化のアイデンティティを検証します。これにより、アクティブでパス上の攻撃者がメッセージを傍受することを防ぎますが、一部の認証局を信頼する必要があります。多くの目的で、これはサーバー用のLet's Encryptの証明書を使用して、クライアントのデフォルトの構成に依存することで実現できます。
ピアツーピア、ファーストオンの信頼、意図的に不安定なアプリケーション、またはドメイン名でサーバーが識別されない場合など、場合によっては、これは実用的ではありません。任意の証明書の検証ロジックは、 rustlsのdangerous_configuration機能を有効にし、手でオーバーライドされた証明書検証を使用してquinn ClientConfigを構築することにより、実装できます。
独自の認証局を運営する場合、RCGENを使用して、自己署名証明書をオンデマンドで生成できます。自動署名証明書を自動的に生成するサーバーをサポートするために、生成された証明書を記述して永続的なストレージを作成し、将来の実行で再利用する必要があります。
すべてのフィードバック歓迎。バグ、ドキュメントのリクエスト、および問題トラッカーへのその他のフィードバックを自由に提出してください。
Quinn-Proto Test Suiteは、再現性のためにシミュレートされたIOを使用し、特定のタイミングに敏感なテストで長い睡眠を避けます。 SSLKEYLOGFILE環境変数が設定されている場合、テストはWiresharkなどの外部プロトコル分析器を使用して検査のためにUDPパケットを放出し、各接続のクライアント側のNSS互換のキーログは、変数で指定されたパスに書き込まれます。
公開されているクレートのリリースの最小サポートされた錆バージョンは、リリース時に常に少なくとも6ヶ月生まれます。