QUICレイヤー:次世代のネットワーク通信

4Dで稼働する最も大規模なプロダクションサーバーでは、1000を超える同時接続を受け入れており、その数はなお増え続けています。その結果、私たちのチームでは、パフォーマンスがますます重要な点になってきています。新しいバージョンのHTTP規格で使用されているQUICプロトコルは、スピードと信頼性を高めるために特別に設計されたプロトコルです。4D では常に最新のワクワクするような楽しい技術を求めているため、現在低レベルのネットワークプロトコルをQUICプロトコルに置き換える作業を行っています。

v20では、このネットワークレイヤーに切り替えて、パフォーマンスが向上するかどうかをテストすることができます。これはまだベータテスト中で、デフォルトのネットワークレイヤーとして使用するためには、皆様からのフィードバックが必要だからです。そのため、4Dのベータ版でのみ使用することができます。

QUIC は、Quick UDP Internet Connectionsの略で、10年前にGoogleによって開始されました。2021年5月にIETFで正式に標準化され、HTTP/3接続のプロトコルとして採用されました。

 

4Dでは長い間、いくつかの異なるネットワークレイヤーを使ってきました。一般的に「旧式ネットワークレイヤー」と呼ばれる最初のものは、何も通信をしていない状態の時にCPUを使いすぎていました。ServerNetレイヤーは、この問題を解消し、コンピュータのスリープモードのサポートなどの機能をもたらしましたが、これもまた常時接続を必要としており、不安定なネットワークにおいては完璧とはいえませんでした。この2つのレイヤーを使う限りは、状況は袋小路にあり、改善の余地はあまりないのです。

TCPを使用するこれまでのレイヤーとは異なり、QUICはパケットの伝送にUDPプロトコルを使用しています。これにより、パケットロスや輻輳、その他の様々なネットワーク上の問題が発生した場合でも、より早く回復することができます。4D での予備テストにおいては、QUIC はその期待を裏切っていません。Pingが高いような場合でも、QUICは他のネットワークレイヤーよりも速度を維持しており、パケットロスが発生しても、それによるスピードの影響は最小限に抑えられています。このプロトコルの総合的な安定性は驚くほど高いと言ってよく、私たちはこのネットワーク層をこれまで提供してきた物の中でも最も安定したものにすることを目標としています。

v20のベータ版においては、ストラクチャー設定の互換性ページでこのレイヤーを有効にすることができます。QUICはUDPで動作するため、ルーターやファイアウォールがUDP接続を受け入れる必要があること点に注意して下さい。第二の重要なポイントは、アプリケーションサーバーとデータベースサーバーの両方が同じポート(デフォルトでは19813)を受信することです。これは、QUIC が今までのネットワークレイヤーのようにプロセスごとに1つのソケットを開くのではなく、すべてのネットワーク通信を1つのソケットにまとめる方法をとっているからです。また、QUICの通信は必ずTLSで暗号化されます。是非、ご自分の環境でQUIC をテストしてみて下さい。皆様のフィードバックをもとに改良していきます。

その他に質問やコメントがあれば、遠慮なく4Dフォーラムでお尋ね下さい。

Nicolas Brachfogel
- プロダクトオーナー & シニアデベロッパー - Nicolas Brachfogelは、2017年にシニアデベロッパーとして4Dに入社しました(4D Serverとネットワークを担当)。Apple Siliconのリリースを管理するプロダクトオーナーとして、ユーザーストーリーを書いて機能仕様に落とし込み、機能実装が顧客のニーズを満たしているかを確認する役割を担っています。Institut Supérieur d'Informatique Appliquée (INSIA) を卒業した Nicolas は、2001年にソフトウェア開発者としてのキャリアをスタートさせました。JavaとC++で数年間コーディングした後、ゲーム会社のクライアント・サーバー開発を専門に担当。サーバー開発者/アーキテクトとして、多くのゲーム(Dofus Arena、Drakerz、Trivial Pursuit Go!)のサーバーアーキテクチャに携わり、成功を収めてきました。