この記事は「New P2P layer of the Internet Computer introduces QUIC for State Sync」を引用/翻訳しています。
DFINITY The Internet Computer Review /公開:2023年9月7日
これまで、インターネットコンピューターのステート同期にはTCPを使用する従来のP2Pレイヤーが用いられていました。しかし、新しいP2Pレイヤーはステート同期に特化しており、QUICトランスポートプロトコルを使用することで、よりシンプルで高性能かつ安全で、将来の進化にも対応可能な設計になっています。
著者:ヨタム・ハーコル
序章
インターネットコンピューターブロックチェーンは、各サブネットのノード間でメッセージを分散させるピアツーピア(P2P)プロトコルに依存しています。これらのメッセージは、インターネットコンピュータープロトコルのクライアントによって生成されます。クライアントは、インターネットコンピューターのコンセンサスプロトコルや、ステート同期プロトコルなどの上位層プロトコルを実装しています。
これまで、すべてのクライアントが同じP2Pコンポーネントを用いてサブネット内の通信を行ってきましたが、これが複雑なコードや非効率的なパフォーマンスを招き、実装の変更を困難にしていました。
新しいP2Pレイヤーは、異なるクライアント間のP2P通信を分離し、コードを簡素化し、インターネットコンピューターのネットワーキングに新機能と改良を導入できるようにします。これにより、QUICトランスポートプロトコルがTCPに代わり採用され、複数のストリームを同時に処理できる利点があります。
この記事では、技術的な変更を詳しく解説し、新しいQUICの機能がどのように活用され、インターネットコンピューターの新しいP2Pレイヤーがどのように構築されているかを説明します。
インターネットコンピューターのピアツーピアプロトコル
インターネットコンピューターのP2Pレイヤーは、ノードのサブネット内でメッセージを配信する役割を担っています。各サブネットは独立したP2Pネットワークを運営しており、ノード間でメッセージを送信します。
P2Pレイヤーの上には、インターネットコンピューターコンセンサスプロトコルなどの複数のコンポーネントが存在し、ステート同期プロトコルも含まれます。
インターネットコンピューターのステート同期プロトコル
図1:インターネットコンピューターのステート同期プロトコルステート同期プロトコルは、ノードが遅延した場合などに、サブネットの複製された状態を再実行せずに同期することを可能にします。ノードは必要な状態をダウンロードし、チェーンキーを使用してその正当性を検証します。
最新のノードは数百ラウンドごとに「チェックポイント」を作成し、複製された状態をディスクに書き込み、そのハッシュを計算します。プロトコルはこのハッシュを使って、特定のブロックの高さに対応する状態を同意させます。
QUICを使用したステート同期のためのP2Pの簡素化
図2:新しいP2Pレイヤーの設計図新しいP2Pレイヤーは、ネットワーキング層のみに変更を加え、QUICトランスポートプロトコルを採用します。QUICは、UDP上で実装される最新のトランスポートプロトコルであり、1つの接続上で複数のストリームを処理する能力を持ちます。これにより、完全に非同期なP2Pレイヤーコードの実現が可能となり、CPUと帯域幅の利用効率が向上します。
QUICへの切り替えの利点
QUICのストリームマルチプレックス
QUICのストリームマルチプレックス機能により、P2Pレイヤーのコードを完全に非同期に変換でき、CPUと帯域幅のリソースをより効率的に活用することができます。これにより、リクエスト処理におけるヘッドオブラインブロッキングを回避し、コードの信頼性を向上させることが可能です。
マルチストリーム構造の利点
QUICを使用するもう一つの利点は、接続がマルチストリーム構造を持つため、各レスポンスが対応するリクエストに結び付けられることです。これにより、アプリケーション層での状態管理が不要になります。
新しいトランスポートの他のクライアントへの適用
前述の通り、他のクライアントが使用するP2Pレイヤーの刷新にも取り組んでいます。最終的には、すべてのクライアントのメッセージが同じQUIC接続でマルチプレックスされ、TCPトランスポートが廃止される予定です。QUICの使用は、クライアントごとのトラフィックを動的に優先させるのに役立つ可能性があります。たとえば、ステート同期が帯域幅を多く消費する操作である場合、それを他のクライアントよりも優先させて早く完了させることが考えられます。しかし、同じサブネット内で多くのノードがステート同期を行っている場合、コンセンサスプロトコルがステート同期よりも優先されるようにする必要があるかもしれません。そうしないと、コンセンサスプロトコルが十分に進行できなくなる可能性があります。
コンセンサスのためのP2Pレイヤーの刷新
現在実装中のコンセンサス用P2Pレイヤーの刷新により、既存のP2Pレイヤーは、スケーラビリティ、パフォーマンス、P2Pとコンセンサスレイヤーの信頼性の面で大幅に改善されます。このテーマに関する詳細情報は今後発表する予定です。
ステート同期プロトコルの改善方法
P2Pレイヤーの変更により、ステート同期プロトコルに新機能を追加することが容易になります。その一例として、完全な状態を持たないピアからチャンクをダウンロードできる機能が挙げられます。これは特に、同じサブネット内の複数のノードが状態を同期する必要がある場合に、プロトコルのパフォーマンスを大幅に向上させます。
インターネットコンピューターコンセンサスプロトコルに関する論文をPODC 2022でご覧ください。
詳細は Internet Computerページへ: internetcomputer.org
X: @DFINITYDev
Comments