輻輳制御
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/01 19:49 UTC 版)
「Transmission Control Protocol」の記事における「輻輳制御」の解説
TCPは高性能を達成し輻輳崩壊(ネットワーク性能が数桁のオーダーで低下する現象)を防ぐため、輻輳制御機構をいくつか備えている。ネットワークに流入させるデータレートを制御し、崩壊のきっかけとなるようなレート未満でデータを送るよう保つ。また、おおまかに最大最小公平(英語版)なフロー割り当てを目指す。 送信データへの ACK (確認応答)の有無は、送信側でネットワークの状態を推測する材料となる。これをタイマと組み合わせ、データのフローの振る舞いを変化させることができる。これを一般に輻輳制御またはネットワーク輻輳回避などと呼ぶ。 最近のTCP実装では、スロースタート(英語版)、輻輳回避(英語版)、TCP高速再送アルゴリズム(英語版)、ファストリカバリ(en, RFC 5681) という4つの相互にからみあったアルゴリズムを使用している。 スループットをあげるため輻輳しない限界まで送信側はスライディングウィンドウを大きくする必要があるが、ウィンドウサイズを調整する輻輳回避アルゴリズムは長年研究されている。一覧は w:TCP congestion avoidance algorithm を参照。かつては、輻輳するとパケットロスが発生することを利用し、パケットロスをベースにした TCP Reno およびそれを改良した TCP NewReno (RFC 3782) がよく使われていたが、現在では、送信側のスライディングウィンドウにどれだけの時間とどまっていたかを元にしたアルゴリズム (Delay-based Congestion Avoidance) が中心になっており、Microsoft Windows では、Windows Vista 以降は、Compound TCP(英語版) が採用され、Linux では 2.6.8〜2.6.18 は BIC TCP(英語版) が、2.6.19 以降は CUBIC TCP(英語版) が使われている。 さらに送信側には「再送タイムアウト (RTO)」があり、送信してから確認応答が戻るまでの時間であるラウンドトリップタイム (RTT) を推算し、ばらつきも考慮して設定する。このタイマの動作は RFC 2988 で規定されている。RTTの推算には微妙な点がある。例えば、再送パケットのRTTを計算する場合は注意しなければならず、一般にカーンのアルゴリズム(英語版)やTCPタイムスタンプ(RFC 1323 参照)を使う。個々のRTTの標本から時系列で平均をとり、ジェイコブソンのアルゴリズムを使って Smoothed Round Trip Time (SRTT) を生成する。最終的にSRTT値がRTTの推算に使われる。 TCPを拡張して、喪失を高信頼に扱ったり、誤りを最小化したり、輻輳を制御してより高速化しようという試みが今も行われている。
※この「輻輳制御」の解説は、「Transmission Control Protocol」の解説の一部です。
「輻輳制御」を含む「Transmission Control Protocol」の記事については、「Transmission Control Protocol」の概要を参照ください。
Weblioに収録されているすべての辞書から輻輳制御を検索する場合は、下記のリンクをクリックしてください。

- 輻輳制御のページへのリンク