要約

  • QUICはストリーム種別ごとに、接続中に開設できる累積数を許可する。
  • ストリームを閉じても開設枠は戻らず、再利用可能な稼働スロットにはならない。
  • 伝送レベルの許可、アプリケーションの同時実行数、実行ワーカー、下流資源、運用能力は別々に記録する。

運用画面が initial_max_streams_bidi、initial_max_streams_uni、または MAX_STREAMS を「現在の同時実行数」と表示することがある。さらに閉じたストリームを引いて残りを空き枠とする。しかしQUICが示すのは、接続の存続期間にわたり、特定の種別について相手が累積して開設できる数である。今この瞬間に何本が開いているかを示す値ではない。

ストリームIDには開始側と方向が含まれる。双方向と単方向は別の番号空間を持ち、制限も分かれる。一方の種別の許可を他方へ移すことはできず、開始側の違いも消せない。したがって監査記録では、数値を解釈する前に開始側と方向を保持する必要がある。

初期パラメーターがない、またはゼロなら、対応する MAX_STREAMS が後から来るまで相手はその種別を開けない。後続の値は累積上限を増やせるが、減らせない。増加しない MAX_STREAMS は効力を持たず無視される。見るべき比較は生きている本数ではなく、累積許可と開設済みの最大ストリーム番号である。

台帳には、累積許可、開設済みの最大番号、開閉状態、アプリケーションが要求した同時実行数、待ち行列、実行ワーカー、メモリー、CPU、下流資源、達成可能なスループット、遅延、完了、運用上または業務上の結果を別々に記す。閉鎖はライブ状態を変えるが、許可された開設数を減らさない。閉じた番号を新しい開設のために再利用することもない。

許可を超えて開設すれば STREAM_LIMIT_ERROR になる。2^60 を超える値はストリームIDの表現と整合せず、接続エラーにもなる。これは有効性と端点の状態露出に関する規則であり、配備可能な処理能力、達成可能なスループット、運用能力の保証ではない。制限が厳しすぎれば必要なアプリケーションを妨げ、緩すぎれば相手が端点に保持させる状態を増やす。

STREAMS_BLOCKED は、送信側が新しいストリームを作ろうとしたものの、現在の伝送制限に阻まれたことを示す。許可を生み出すものではない。アプリケーションの需要の理由、ワーカーの空き、下流資源、処理量、成功、運用能力を証明するものでもない。伝送境界で需要が阻害された証拠として扱うべきである。

TR-046はバイトのフロー制御許可、TR-057は最終サイズの会計、TR-054はSTOP_SENDINGによる一方向の停止、TR-053は接続終了、TR-040は接続IDによる経路制御を扱う。本稿の累積開設台帳と混同してはならない。