到着順序の保証

QUIC はストリーム内での到着順序を保証しますが、ストリーム間の順序を保証しません。

これは、ストリームは送信したデータの順序を維持しますが、各ストリームが宛先に到達する順序はアプリケーションがそれらを送信したときとは異なるものになり得ることを意味します!

例: ストリーム A と B がサーバーからクライアントに転送されました。

ストリーム A は最初に処理が開始され、ストリーム B はそれに続きました。

QUIC では、パケットの損失はそのパケットが属するストリームのみに影響を及ぼします。

ストリーム A でパケット損失が発生し、ストリーム B では発生しなかった場合、ストリーム A がパケットの再送を行っている間もストリーム B は転送を継続し、先に完了するかもしれません。これは HTTP/2 では不可能でした。

ここに、2つの QUIC エンドポイントが1つのコネクションを介して黄色のストリームと青色のストリームの転送を行う様子を示す図があります。

それぞれのストリームは独立しており、異なる順序で到達する可能性がありますが、いずれのストリームも信頼性と到達順序を損なうことなくアプリケーションに配信されます。

Last updated